更新时间:2022-12-14 GMT+08:00

compaction&cleaning配置

参数

描述

默认值

hoodie.cleaner.policy

要使用的清理政策。Hudi将删除旧版本的parquet文件以回收空间。 任何引用此版本文件的查询和计算都将失败。最好确保数据保留的时间超过最大查询执行时间。

KEEP_LATEST_COMMITS

hoodie.cleaner.commits.retained

保留的提交数。因此,数据将保留为num_of_commits * time_between_commits(计划的),这也直接转化为逐步提取此数据集的数量。

10

hoodie.keep.min.commits, hoodie.keep.max.commits

每个提交都是“.hoodie”目录中的一个小文件。由于DFS通常不支持大量小文件,因此Hudi将较早的提交归档到顺序日志中。 提交通过重命名提交文件以原子方式发布。

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时,紧接在插入或插入更新或批量插入的提交或增量提交操作之后由摄取本身触发压缩。

false

hoodie.compact.inline.max.delta.commits

触发内联压缩之前要保留的最大增量提交数。

5

hoodie.compaction.lazy.block.read

当CompactedLogScanner合并所有日志文件时,此配置有助于选择是否应延迟读取日志块。选择true以使用I/O密集型延迟块读取(低内存使用),或者为false来使用内存密集型立即块读取(高内存使用)。

false

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

由org.apache.hudi.io.compact.strategy.DayBasedCompactionStrategy使用,表示在压缩运行期间要压缩的最新分区数。

10

hoodie.compaction.payload.class

这需要与插入/插入更新过程中使用的类相同。就像写入一样,压缩也使用记录有效负载类将日志中的记录彼此合并,再次与基本文件合并,并生成压缩后要写入的最终记录。

org.apache.hudi.common.model.OverwriteWithLatestAvroPayload