更新时间:2024-12-25 GMT+08:00
分享

VACUUM

命令功能

VACUUM命令用于删除表目录中不由 Delta 管理的所有文件,并删除不再处于表事务日志最新状态且超过保留期阈值的数据文件。默认阈值为 7 天。

注意事项

RETAIN num HOURS表示保留期阈值,建议设置为至少 7 天。

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

Delta Lake 具有一项安全检查,用于防止运行危险的VACUUM命令,当指定保留期阈值少于168小时时会报错限制该操作。 如果确定指定保留期阈值进行vacuum操作,可通过将 Spark 配置属性 spark.databricks.delta.retentionDurationCheck.enabled 设置为 false 来关闭此安全检查。

命令格式

VACUUM[database_name.]table_name|DELTA.`obs://bucket_name/tbl_path` [RETAIN num HOURS];

支持通过DRY RUN参数模拟执行vacuum操作,返回vacuum将要删除的文件列表:

VACUUM[database_name.]table_name|DELTA.`obs://bucket_name/tbl_path` [RETAIN num HOURS] [DRY RUN];

参数描述

表1 VACUUM参数

参数

描述

database_name

Database名称,由字母、数字和下划线(_)组成。

table_name

Database中的表名,由字母、数字和下划线(_)组成。

bucket_name

obs桶名称。

tbl_path

Delta表在obs桶中的存储位置。

num

保留期时长

所需权限

  • SQL权限
表2 VACUUM所需权限列表

权限描述

表的UPDATE权限

  • 细粒度权限:dli:table:update。
  • 由LakeFormation提供的元数据服务,权限配置详见LakeFormation文档。

示例

VACUUM delta_table0 RETAIN 168 HOURS;

VACUUM delta_table0 RETAIN 48 HOURS DRY RUN;

VACUUM delta.`obs://bucket_name0/db0/delta_table0` RETAIN 168 HOURS;

系统响应

可在driver日志和客户端中查看命令运行成功或失败。

相关文档