【问题标题】:Vacuuming Delta tables in Databricks does not work在 Databricks 中清理 Delta 表不起作用
【发布时间】:2021-06-04 13:32:56
【问题描述】:

我正在尝试清理 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}

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

我在这里错过了什么?

【问题讨论】:

    标签: pyspark azure-databricks delta-lake vacuum tbl-properties


    【解决方案1】:

    也试试 checkpointRetentionDuration 。 ALTER TABLE 表名

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

    【讨论】:

    • 感谢您的建议。不幸的是,这不起作用。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-05
      • 2021-09-29
      • 1970-01-01
      • 2019-05-14
      • 2020-11-04
      • 2021-12-04
      • 1970-01-01
      • 2019-06-24
      相关资源
      最近更新 更多