永远保留Delta Lake的Delta日志事务数据

时间:2020-12-29 03:14:30

标签: databricks azure-databricks delta-lake

我对 Delta 湖的事务日志有点困惑。在文档中提到,默认保留策略是 30 天,可以通过属性修改 -:delta.logRetentionDuration=interval-string。 但我不明白什么时候从 delta_log 文件夹中删除了实际的日志文件。是在我们运行某些操作时吗?或者可能是 VACCUM 操作。但是,提到 VACCUM 操作只删除数据文件而不是日志。但是它会删除比指定的日志保留时间更早的日志吗?

参考 -:https://docs.databricks.com/delta/delta-batch.html#data-retention

1 个答案:

答案 0 :(得分:0)

围绕数据保留的概念是制定政策,确保无法保留的数据应作为流程的一部分自动删除。 默认情况下,DeltaLake 存储所有数据修改的更改数据捕获历史记录。有两个设置 delta.logRetentionDuration(默认间隔 30 天)和 delta.deletedFileRetentionDuration(默认间隔 1 周)。

Delta_log 是 Databricks Delta Lake 中事务日志的默认实现。它会在 30 天的默认期限内保留表事务的提交历史记录。但是,如果您非常频繁地摄取 delta 湖表中的数据,您可能会看到在 _delta_log 目录下的存储帐户中创建了许多微小的 json 和 crc 文件。如果您不想将日志历史记录保留 30 天,这可能会增加您的存储成本。

如果您正在管理您的数据块环境,您应该考虑截断这些日志文件。在 databricks delta Lake 中执行此操作的默认方法是为每个表运行 ALTER TABLE.. TBLPROPERTIES 语句,这对于管理来说可能听起来很麻烦。

%sql
ALTER table_name SET TBLPROPERTIES ('delta.logRetentionDuration'='interval 240 hours', 'delta.deletedFileRetentionDuration'='interval 1 hours')
SHOW TBLPROPERTIES table_name