
# compaction\&cleaning配置
| 参数                                           | 描述                                                                                                                                                       | 默认值                                                                                                               |
|:---|:---|:---|
| hoodie.clean.automatic                       | 是否执行自动clean。                                                                                                                                             | true                                                                                                              |
| hoodie.cleaner.policy                        | 要使用的清理策略。Hudi将删除旧版本的parquet文件以回收空间。 任何引用此版本文件的查询和计算都将失败。需要确保数据保留的时间超过最大查询执行时间。                                                                           | KEEP_LATEST_COMMITS                                                                                               |
| hoodie.cleaner.commits.retained              | 保留的提交数。因此，数据将保留为num_of_commits \* time_between_commits（计划的），这也直接转化为逐步提取此数据集的数量。                                                                          | 10                                                                                                                |
| hoodie.keep.max.commits                      | 触发归档操作的commit数阈值                                                                                                                                         | 30                                                                                                                |
| hoodie.keep.min.commits                      | 归档操作保留的commit数。                                                                                                                                          | 20                                                                                                                |
| hoodie.commits.archival.batch                | 这控制着批量读取并一起归档的提交即时的数量。                                                                                                                                   | 10                                                                                                                |
| hoodie.parquet.small.file.limit              | 该值应小于maxFileSize，如果将其设置为0，会关闭此功能。由于批处理中分区中插入记录的数量众多，总会出现小文件。Hudi提供了一个选项，可以通过将对该分区中的插入作为对现有小文件的更新来解决小文件的问题。此处的大小是被视为"小文件大小"的最小文件大小。                       | 104857600 byte                                                                                                    |
| hoodie.copyonwrite.insert.split.size         | 插入写入并行度。为单个分区的总共插入次数。写出100MB的文件，至少1KB大小的记录，意味着每个文件有100K记录。默认值是超额配置为500K。 为了改善插入延迟，请对其进行调整以匹配单个文件中的记录数。将此值设置为较小的值将导致文件变小（尤其是当compactionSmallFileSize为0时）。 | 500000                                                                                                            |
| hoodie.copyonwrite.insert.auto.split         | Hudi是否应该基于最后24个提交的元数据动态计算insertSplitSize，默认关闭。                                                                                                           | true                                                                                                              |
| hoodie.copyonwrite.record.size.estimate      | 平均记录大小。如果指定，Hudi将使用它，并且不会基于最后24个提交的元数据动态地计算。 没有默认值设置。这对于计算插入并行度以及将插入打包到小文件中至关重要。                                                                         | 1024                                                                                                              |
| hoodie.compact.inline                        | 当设置为true时，紧接在插入或插入更新或批量插入的提交或增量提交操作之后由摄取本身触发压缩。                                                                                                          | true                                                                                                              |
| hoodie.compact.inline.max.delta.commits      | 触发内联压缩之前要保留的最大增量提交数。                                                                                                                                     | 5                                                                                                                 |
| hoodie.compaction.lazy.block.read            | 当CompactedLogScanner合并所有日志文件时，此配置有助于选择是否应延迟读取日志块。选择true以使用I/O密集型延迟块读取（低内存使用），或者为false来使用内存密集型立即块读取（高内存使用）。                                               | true                                                                                                              |
| hoodie.compaction.reverse.log.read           | HoodieLogFormatReader会从pos=0到pos=file_length向前读取日志文件。如果此配置设置为true，则Reader会从pos=file_length到pos=0反向读取日志文件。                                                | false                                                                                                             |
| hoodie.cleaner.parallelism                   | 如果清理变慢，请增加此值。                                                                                                                                            | 200                                                                                                               |
| hoodie.compaction.strategy                   | 用来决定在每次压缩运行期间选择要压缩的文件组的压缩策略。默认情况下，Hudi选择具有累积最多未合并数据的日志文件。                                                                                                | org.apache.hudi.table.action.compact.strategy. LogFileSizeBasedCompactionStrategy |
| hoodie.compaction.target.io                  | LogFileSizeBasedCompactionStrategy的压缩运行期间要花费的MB量。当压缩以内联模式运行时，此值有助于限制摄取延迟。                                                                                | 500 \* 1024 MB                                                                                                    |
| hoodie.compaction.daybased.target.partitions | 由org.apache.hudi.io.compact.strategy.DayBasedCompactionStrategy使用，表示在压缩运行期间要压缩的最新分区数。                                                                    | 10                                                                                                                |
| hoodie.compaction.payload.class              | 这需要与插入/插入更新过程中使用的类相同。就像写入一样，压缩也使用记录有效负载类将日志中的记录彼此合并，再次与基本文件合并，并生成压缩后要写入的最终记录。                                                                            | org.apache.hudi.common.model.Defaulthoodierecordpayload                                                           |
| hoodie.schedule.compact.only.inline          | 在写入操作时，是否只生成压缩计划。在hoodie.compact.inline=true时有效。                                                                                                         | false                                                                                                             |
| hoodie.run.compact.only.inline               | 通过Sql执行run compaction命令时，是否只执行压缩操作，压缩计划不存在时直接退出。                                                                                                         | false                                                                                                             |
   
