清理 Databricks 中的 Delta 表不起作用

Vacuuming Delta tables in Databricks does not work

我正在尝试清理 Databricks 中的 Delta tables。但是,不知何故它不起作用,我不明白为什么。这导致我们的存储不断增加。

我设置了以下 table 属性:

%sql
ALTER TABLE <table_name> SET TBLPROPERTIES 
("delta.deletedFileRetentionDuration" = "interval 2 hours");

%sql
ALTER TABLE <table_name> SET TBLPROPERTIES 
("delta.logRetentionDuration" = "interval 2 hours");

然后我 运行 在 Databricks notebook 中执行以下 vacuum 命令:

%sql
VACUUM db_name.table_name retain 2 hours

或者像这样:

%sql
VACUUM db_name.table_name

在 dbfs 中显示为要删除的候选文件在 运行 执行此命令后仍然存在。

delta_logjson中的数据示例:

{"删除":{"路径":"年=2021/月=05/日=06/part-00001-52dd3cf7-9afc-46b0-9a03-7be3d1ee533e.c000.snappy.parquet"," deletionTimestamp":1622798688231,"dataChange":true}

出于测试目的,我还添加了一些数据并删除了一些数据,因为我读到您需要更改 table 才能成功执行 vacuum。

我在这里错过了什么?

也试试 checkpointRetentionDuration 。 改变 TABLE table-名称

设置 TBLPROPERTIES('delta.checkpointRetentionDuration' =“7 天”)

经过一些研究,我发现我正在尝试使用 vacuum 而不是旧数据文件来删除日志文件。但是,我确实发现了为什么我们在 Databricks 中的存储使用量不断增加。似乎 Databricks 在 Azure 存储帐户中创建了锁定的容器,并在那里保存了集群 metrics/logs。这占我们在特定存储帐户中使用的 3TB 中的 2TB。