VACUUM

清除与表关联的文件。 对于 Delta 和 Apache Spark 表,此命令有不同版本。

清空 Delta 表(Azure Databricks 上的 Delta Lake)

以递归方式清空与 Delta 表关联的目录,并删除不再处于表事务日志最新状态且超过保留期阈值的数据文件。 根据从 Delta 的事务日志中以逻辑方式删除文件的时间和保留时间(而不是其在存储系统上的修改时间戳)删除这些文件。 默认阈值为 7 天。 Azure Databricks 不会对 Delta 表自动触发 VACUUM 操作。 请参阅删除 Delta 表不再引用的文件

如果对 Delta 表运行 VACUUM,则将无法再回头按时间顺序查看在指定数据保留期之前创建的版本。

警告

Databricks 建议将保留期间隔设置为至少 7 天,因为并发读取器或写入器仍可将旧快照和未提交的文件用于表。 如果 VACUUM 清理活动文件,则并发读取器可能会失败;更糟糕的是,当 VACUUM 删除尚未提交的文件时,表可能会损坏。 选择的时间间隔必须比最长运行并发事务长,也必须比任何流可滞后于对表的最新更新的最长时间长。

Delta Lake 具有一项安全检查,用于防止运行危险的 VACUUM 命令。 如果确定对此表执行的操作所耗的时间均未超过计划指定的保留间隔,可通过将 Spark 配置属性 spark.databricks.delta.retentionDurationCheck.enabled 设置为 false 来关闭此安全检查。

VACUUM table_identifier [RETAIN num HOURS] [DRY RUN]
  • table_identifier

    • [database_name.] table_name:表名,可选择使用数据库名称进行限定。
    • delta.`<path-to-table>`:现有 Delta 表的位置。
  • RETAIN num HOURS

    保留期阈值。

  • DRY RUN

    返回要删除的文件的列表。

清空 Spark 表

以递归方式清空与 Spark 表关联的目录,并删除超过保留期阈值的未提交文件。 默认阈值为 7 天。 Azure Databricks 在数据写入时自动触发 VACUUM 操作。 请参阅清除未提交的文件

语法

VACUUM [ table_identifier | path] [RETAIN num HOURS]
  • table_identifier

    [database_name.] table_name:表名,可选择使用数据库名称进行限定。

  • 路径

    表文件的路径。

  • RETAIN num HOURS

    保留期阈值。