You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Databricks中清除Delta Lake版本历史?

清除Delta Lake表全部版本历史(无需删除文件夹的方案)

除了直接删除Delta表的存储文件夹,有两种可靠方法可以完全清除版本历史,仅保留当前最新版本的数据:

方案1:通过VACUUM强制清理所有旧版本

默认情况下Delta Lake限制VACUUM最少保留7天的版本,防止并发操作引发问题,但可以临时关闭该限制后清理所有历史版本:

  1. 关闭保留时长检查:
spark.conf.set("spark.databricks.delta.retentionDurationCheck.enabled", "false")
  1. 执行VACUUM 0清理所有早于0小时的版本(即仅保留当前最新版本):
from delta.tables import DeltaTable

delta_table = DeltaTable.forPath(spark, "/mnt/lake/BASE/SQLClassification/cdcTest/dbo/cdcmergetest/1")
delta_table.vacuum(0)
  1. 操作完成后恢复默认安全配置:
spark.conf.set("spark.databricks.delta.retentionDurationCheck.enabled", "true")

方案2:重写Delta表生成全新版本

如果不想修改安全配置,可以直接读取当前表的最新数据,重新写入原路径覆盖,生成仅含当前版本的新Delta表:

  1. 读取表的最新数据:
latest_data = spark.read.format("delta").load("/mnt/lake/BASE/SQLClassification/cdcTest/dbo/cdcmergetest/1")
  1. 覆盖原路径写入(建议先备份原表):
# 可选:备份原表到其他路径
# latest_data.write.format("delta").save("/mnt/lake/BASE/SQLClassification/cdcTest/dbo/cdcmergetest/1_backup")

# 覆盖原路径,生成无历史版本的新表
latest_data.write.format("delta").mode("overwrite").save("/mnt/lake/BASE/SQLClassification/cdcTest/dbo/cdcmergetest/1")

注意事项

  • 执行任何清理操作前,确保没有正在运行的并发写入任务,避免数据损坏。
  • 操作前务必备份数据,防止意外丢失。

内容的提问来源于stack exchange,提问作者Patterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 17:15:05