问题描述
我正在尝试清空 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')