开启/关闭TTL
命令功能
开启或者关闭Hudi表的TTL能力。
命令格式
call ttl_configuration(table => "[table]", path => "[path]", enabled => "[enabled]", strategy => "[strategy]", value => "[value]", resolveConflictsBy => "[resolveConflictsBy]", runInline => "[runInline]")
 
  - strategy为NUM_COMMITS时,value指定的值代表每[value]个commit/deltacommit会触发一次TTL。
 - strategy为TIME_ELAPSED时,value指定的值代表每[value]天会触发一次TTL。
 - resolveConflictsBy属性用来处理TTL策略冲突,比如dt=2023/05/01分区同时命中以下两条TTL策略:
     
策略A:call ttl_policy_save(table => 'hudi_table', spec => 'dt=2023/05/*', units => 'DAYS', value => '2', level => 'PARTITION');
策略B:call ttl_policy_save(table => 'hudi_table', spec => 'dt=2023/05/01', units => 'DAYS', value => '1', level => 'PARTITION');
 - 当resolveConflictsBy为MAX_TTL时,如果同一个分区命中多条TTL策略,则保留时间最长的策略优先级最高,对于dt=2023/05/01分区来说策略A会生效,策略B不生效。
 - 当resolveConflictsBy为MIN_TTL时,如果同一个分区命中多条TTL策略,则保留时间最短的策略优先级最高,对于dt=2023/05/01分区来说策略B会生效,策略A不生效。
 - runInline为true时,TTL会在每次写入完成后会根据strategy和value属性的值去判断是否要检查所有分区的TTL情况,如果需要检查并且检查出老化的分区,则逻辑删除老化的分区,逻辑删除操作会生成一个replacecommit,等执行clean操作时会自动物理删除老化的分区。如果不需要检查,则跳过,进行下一次写入。
 - runInline为false时,不需要指定strategy和value属性,TTL会在每次clean操作过程中去判断所有分区是否满足老化的条件,如果满足则直接物理删除老化的分区。
 
参数描述
| 
        参数  | 
      
        描述  | 
      
        是否必填  | 
     
|---|---|---|
| 
        table  | 
      
        String类型,表名或者库名.表名  | 
      
        否,table和path二选一  | 
     
| 
        path  | 
      
        String类型,表的绝对路径  | 
      
        否,table和path二选一  | 
     
| 
        enabled  | 
      
        String类型,是否开启TTL  | 
      
        否,false或者true,默认是false  | 
     
| 
        strategy  | 
      
        String类型,TTL的触发模式  | 
      
        否,NUM_COMMITS或者TIME_ELAPSED,默认是NUM_COMMITS  | 
     
| 
        value  | 
      
        String类型,TTL的触发间隔时间  | 
      
        否,默认是10  | 
     
| 
        resolveConflictsBy  | 
      
        String类型,TTL的冲突解决策略  | 
      
        否,MAX_TTL或者MIN_TTL,默认是MAX_TTL  | 
     
| 
        runInline  | 
      
        String类型,TTL是否在写操作完成时触发  | 
      
        否,true或者false,默认是false  | 
     
示例
- 指定表名开启TTL(每10个replacecommit触发一次TTL):
    
call ttl_configuration(table => "hudi_table", enabled => "true", strategy => "NUM_COMMITS", value => "10", resolveConflictsBy => "MAX_TTL", runInline => "true")
 - 指定路径开启TTL(每1天触发一次TTL):
    
call ttl_configuration(path => "hdfs://hacluster/user/hive/warehouse/hudi_table/", enabled => "true", strategy => "TIME_ELAPSED", value => "1", resolveConflictsBy => "MIN_TTL", runInline => "true")
 - 指定表名开启TTL(每次clean触发TTL):
    
call ttl_configuration(table => "hudi_table", enabled => "true", resolveConflictsBy => "MAX_TTL", runInline => "false")
 - 关闭TTL:
    
call ttl_configuration(table => "hudi_table", enabled => "false")