database - DeltaLake:如何在数据集之间进行无限时间旅行?
问题描述
用例:
- 存储大型数据集(CSV/雪花表)的版本并跨版本查询
DeltaLake 表示,除非我们运行 Vacuum 命令,否则我们会将历史信息保留在 DeltaTable 中。并且日志文件每 30 天被删除一次。这里
附加文档指出,我们需要日志文件和数据文件来进行时间旅行。这里
这是否意味着我们只能穿越 30 天?
但不是Delta
文件格式吗?它如何自动删除它的日志?
如果是,还有哪些其他开源版本可以解决跨数据集版本的查询。?
解决方案
只需将数据和日志保留设置设置为非常长的时间。
alter table delta.`/path/to/table` set TBLPROPERTIES ('delta.logRetentionDuration'='interval 36500000 days', 'delta.deletedFileRetentionDuration'='interval 36500000 days')
spark.sql("alter table delta.`{table_path}` set TBLPROPERTIES ("
"'delta.logRetentionDuration'='interval {log_retention_days} days', "
"'delta.deletedFileRetentionDuration'='interval {data_rentention_days} days');".format(
table_path="path/to/table",
log_retention_days=36000000,
data_rentention_days=36000000))
推荐阅读
- java - 如何递归地查找链表中倒数第二个 Char 出现?
- linux - 使用 VSCode 和 AWS SSM 连接到没有 SSH 密钥的远程服务器
- javascript - 模糊 HTML5 画布问题
- node.js - 在 Lambda 中等待承诺的超时错误?
- c# - 如何使用 C# 在谷歌电子表格中搜索或查找数据?
- google-cloud-functions - 为什么一次可调用的客户端调用会调用两次 onCall firebase 函数?
- python - 如何在 matplotlib.axes.Axes.stem 图中显示时间线?
- python - 使用简单的 python tcp 脚本连接同一主机上的两个 Docker 容器,但出现连接被拒绝错误
- arduino - 通过带有串口包的 NodeJS 应用程序硬重置 ESP32
- vue.js - 渲染按钮时 V-IF 无反应