
# Hudi Archive操作说明
#### 什么是Archive
Archive用户清理Hudi表的元数据文件（位于.hoodie目录下，格式为 ${时间戳}.${操作类型}.${操作状态}，比如20240622143023546.deltacommit.request）。对Hudi表进行的每次操作都会产生元数据文件，而元数据文件过多会导致性能问题，所以元数据文件数量最好控制在1000以内。
#### 如何执行Archive
1. 写完数据后archive
   - Spark SQL（set设置如下参数，写数据时触发）
     ```
     hoodie.archive.automatic=true
     hoodie.keep.max.commits=30 // 默认值为30，根据业务场景指定
     hoodie.keep.min.commits=20 // 默认值为20，根据业务场景指定
     ```
     
   
   - SparkDataSource（option里设置如下参数，写数据时触发） **hoodie.archive.automatic=true**
     **hoodie.keep.max.commits=30** // 默认值为30，根据业务场景指定
     **hoodie.keep.min.commits=20** // 默认值为20，根据业务场景指定
     
   
   - Flink（with属性里设置如下参数，写数据时触发） **hoodie.archive.automatic=true**
     **archive.max_commits** **=30** // 默认值为30，根据业务场景指定
     **archive.min_commits** **=20** // 默认值为20，根据业务场景指定
     
    
2. 手动触发1次archive
   - Spark SQL（设置如下参数，手动触发1次）
     ```
     hoodie.archive.automatic=true
     hoodie.keep.max.commits=30 // 默认值为30，根据业务场景指定
     hoodie.keep.min.commits=20 // 默认值为20，根据业务场景指定
     ```
     随后执行SQL，当执行过clean，Timeline中存在数据文件已经被清理的Instant，且总Instant数量超过30时，会触发archive。
     ```
     run archivelog on ${table_name}
     ```
     
    
 
