首页 > 解决方案 > DeltaLake:如何在数据集之间进行无限时间旅行?

问题描述

用例:

DeltaLake 表示,除非我们运行 Vacuum 命令,否则我们会将历史信息保留在 DeltaTable 中。并且日志文件每 30 天被删除一次。这里

附加文档指出,我们需要日志文件和数据文件来进行时间旅行。这里

这是否意味着我们只能穿越 30 天?

但不是Delta文件格式吗?它如何自动删除它的日志?

如果是,还有哪些其他开源版本可以解决跨数据集版本的查询。?

标签: databasedataframeapache-sparkdelta-lake

解决方案


只需将数据和日志保留设置设置为非常长的时间。

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))

推荐阅读