1. 简介
压缩(compaction)仅作用于MergeOnRead类型表,MOR表每次增量提交(deltacommit)都会生成若干个日志文件(行存储的avro文件),为了避免读放大以及减少文件数量,需要配置合适的压缩策略将增量的log file合并到base file(parquet)中。
1.1 环境
- flink 1.13.6
- hudi 0.11.0
1.2 触发策略
提供4种触发策略,可通过hoodie.compact.inline.trigger.strategy / compaction.trigger.strategy进行配置:
- NUM_COMMITS:达到N次commit时触发压缩,默认的触发策略,默认值为5次,通过hoodie.compact.inline.max.delta.commits / compaction.delta_commits配置
- TIME_ELAPSED:自上次压缩以来经过的时间 > N 秒时触发压缩,通过hoodie.compact.inline.max.delta.seconds / compaction.delta_seconds配置
- NUM_AND_TIME:NUM_COMMITS和TIME_ELAPSED同时满足时触发压缩
- NUM_OR_TIME:NUM_COMMITS或TIME_ELAPSED同时满足时触发压缩
1.3 压缩策略
压缩策略是用来决定那些文件组将会被压缩,通过hoodie.compactio