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];
参数描述
参数 |
描述 |
---|---|
database_name |
Database名称,由字母、数字和下划线(_)组成。 |
table_name |
Database中的表名,由字母、数字和下划线(_)组成。 |
bucket_name |
obs桶名称。 |
tbl_path |
Delta表在obs桶中的存储位置。 |
num |
保留期时长 |
所需权限
- SQL权限
权限描述 |
---|
表的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日志和客户端中查看命令运行成功或失败。