【问题标题】:vacuum not deleting old parquet files真空不删除旧镶木地板文件
【发布时间】:2020-06-02 12:58:21
【问题描述】:

我们有 Azure 数据湖以 delta Lake 格式将数据存储在 Parquet 文件中。每次运行后,在合并新数据的地方,我们调用具有 0 小时保留时间的 Vacuum 来删除旧文件并运行优化命令。

但由于某种原因,旧文件没有被删除。不过,databricks 笔记本中没有错误。它说删除了 2 个文件,但我仍然看到它们。我错过了一些明显的东西吗?谢谢!

sqlContext.sql(f"VACUUM  '{adls_location}' RETAIN 0 HOURS")
time.sleep(60)
sqlContext.sql(f"VACUUM  '{adls_location}' RETAIN 0 HOURS")
time.sleep(60)
sqlContext.sql(f"OPTIMIZE '{adls_location}'")

【问题讨论】:

    标签: apache-spark databricks azure-data-lake azure-databricks delta-lake


    【解决方案1】:

    您不能直接在云存储上使用VACUUM。要进行真空存储,您必须将其挂载到 DBFS 并在挂载的目录上运行 VACUUM。

    参考:Azure Databricks - Vacuum

    【讨论】:

    • 我没有在我的问题中提到它,但事实上,我正在对挂载的文件运行真空。
    • 如果您挂载了 ADLS 存储帐户,Vacuum 命令应该将文件作为例外删除。
    • 但事实并非如此。不过,这是解决方法。编写一个单独的 Databricks 笔记本来调用 vaccum 命令,它可以工作。
    • 很高兴知道您的问题已解决。您可以添加这个答案并接受(单击答案旁边的复选标记以将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。
    • %sql VACUUM 对我不起作用(在单独的单元格中)。文件都在那里。表在 SHOW TABLES 中列出,但不能通过任何其他命令访问。
    猜你喜欢
    • 2022-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 2022-06-16
    • 2020-04-03
    • 2018-07-01
    • 2015-06-29
    相关资源
    最近更新 更多