管理TTL策略
命令功能
开启TTL后,使用此命令添加/更新/删除/清空TTL策略。
命令格式
- 添加TTL策略:
call ttl_policy_save(table => "[table]", path => "[path]", spec => "[spec]", level => "[level]", value => "[value]", units => "[units]")
- spec使用正则表达式来选择需要TTL的分区,可以执行show partitions命令查看Hudi表的分区格式,然后写正确的正则表达式来匹配分区。
- value和units要搭配使用,value给定的是整数值,units是数值的单位,表示数据要保留的时长。
- 更新TTL策略:
call ttl_policy_save(table => "[table]", path => "[path]", spec => "[spec]", level => "[level]", value => "[value]", units => "[units]")
如果spec相同,历史的TTL策略就会被更新。
- 删除TTL策略:
call ttl_policy_delete(table => "[table]", path => "[path]", spec => "[spec]")
- 清空TTL策略:
call ttl_policy_empty(table => "[table]", path => "[path]")
- 查看TTL策略:
call ttl_policy_show(table => "[table]", path => "[path]")
参数描述
ttl_policy_save命令:
参数 |
描述 |
是否必填 |
---|---|---|
table |
String类型,表名或者库名.表名 |
否,table和path二选一 |
path |
String类型,表的绝对路径 |
否,table和path二选一 |
spec |
String类型,正则表达式 |
是 |
level |
String类型,TTL级别 |
是,PARTITION或者RECORD,目前仅支持PARTITION |
value |
String类型,保留的时长 |
是 |
units |
String类型,保留时长的单位 |
是,YEARS、MONTHS、WEEKS和DAYS。 |
ttl_policy_delete命令:
参数 |
描述 |
是否必填 |
---|---|---|
table |
String类型,表名或者库名.表名 |
否,table和path二选一 |
path |
String类型,表的绝对路径 |
否,table和path二选一 |
spec |
String类型,正则表达式 |
是 |
ttl_policy_empty命令:
参数 |
描述 |
是否必填 |
---|---|---|
table |
String类型,表名或者库名.表名 |
否,table和path二选一 |
path |
String类型,表的绝对路径 |
否,table和path二选一 |
ttl_policy_show命令:
参数 |
描述 |
是否必填 |
---|---|---|
table |
String类型,表名或者库名.表名 |
否,table和path二选一 |
path |
String类型,表的绝对路径 |
否,table和path二选一 |
示例
场景:
Hudi表是3级别分区,年/月/日,分区字段是dt。
- 添加TTL策略(2023年5月的分区保留1天):
call ttl_policy_save(table => 'hudi_table', spec => 'dt=2023/05/*', units => 'DAYS', value => '1', level => 'PARTITION')
- 更新TTL策略(2023年5月的分区保留1年):
call ttl_policy_save(table => 'hudi_table', spec => 'dt=2023/05/*', units => 'YEARS', value => '1', level => 'PARTITION')
- 删除TTL策略:
call ttl_policy_delete(table => "hudi_table", spec => "dt=2023/05/*")
- 清空TTL策略:
call ttl_policy_empty(table => "hudi_table")
- 查看TTL策略:
call ttl_policy_show(table => "hudi_table")