database - 德尔塔湖 : How to Time Travel infinitely across Datasets?

标签 database dataframe apache-spark delta-lake

用例:

  • 存储大型数据集(CSV/雪花表)的版本并跨版本查询

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

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

这是否意味着我们只能进行 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))

关于database - 德尔塔湖 : How to Time Travel infinitely across Datasets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64274314/

相关文章:

php - PHP 应用程序应该将配置数据存储在定义的常量还是数据库中?

python - 对数据框中的值进行四舍五入并丢失小数点

python - split ("\n") 和 splitlines() 都无法拆分字符串

performance - Scala 编译器如何处理未使用的变量值?

java - 在 Pyspark 中访问 JavaRDD

ios - 从核心数据中删除记录不起作用?

database - 如何使用 talend 在两个代码集(枚举)之间进行映射

mysql - 数据库设计/mysql

python - Pandas 根据索引加入两个数据框

java - 任务不可序列化 - Spark Java