Databricks Delta VACUUM命令未按预期删除历史数据问题咨询
Delta Lake VACUUM 命令无返回无效果问题排查点
- 语法错误
你当前执行的SQL命令语法不符合规范,正确的VACUUM命令关键词顺序应为VACUUM在前,Delta表路径在后,错误的关键词顺序会导致命令未按预期触发清理逻辑。 - 默认保留时长限制
VACUUM默认仅清理早于7天的历史数据文件,未显式指定保留时长的情况下,即便文件实际已经超过你预期的清理阈值,只要未到7天也不会被识别。你可以通过RETAIN参数自定义保留时长,示例命令如下:
%sql -- 保留最近1小时的历史数据,清理更早的文件 VACUUM delta.`/mnt/deltaTestVacuum/myTable/` RETAIN 1 HOURS
对应的DRY RUN校验命令写法为:
%sql VACUUM delta.`/mnt/deltaTestVacuum/myTable/` RETAIN 1 HOURS DRY RUN
- 运行中任务保护
如果当前有正在运行的读写任务关联该Delta表,Delta会自动保护这些任务可能访问的历史文件,避免VACUUM删除后引发任务报错。需要确认所有关联该表的任务全部结束后再执行清理操作。 - 日志清理配置冲突
如果表配置的delta.logRetentionDuration参数值小于你指定的VACUUM保留时长,更早的事务日志会被提前清理,导致VACUUM无法识别对应过期数据文件。可以先调整日志保留时长配置后再执行VACUUM。
内容的提问来源于stack exchange,提问作者user3661384
相关产品推荐
相关产品推荐

