在 Databricks 中清空 Delta 表不起作用

问题描述

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

我设置了以下表格属性

%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 笔记本中运行以下真空命令:

%sql
VACUUM db_name.table_name retain 2 hours

或者像这样:

%sql
VACUUM db_name.table_name

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

delta_log json 中的数据示例:

{"remove":{"path":"year=2021/month=05/day=06/part-00001-52dd3cf7-9afc-46b0-9a03-7be3d1ee533e.c000.snappy.parquet","deletionTimestamp" :1622798688231,"dataChange":true}

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

在这里遗漏了什么?

解决方法

也试试 checkpointRetentionDuration 。 ALTER TABLE 表名

SET TBLPROPERTIES ('delta.checkpointRetentionDuration' = '7 days')