默认情况下,MERGE_ON_READ表的压缩是启用的。 触发器策略是在完成五次提交后执行压缩。 因为压缩会消耗大量内存,并且与写操作处于相同的管道中,所以当数据量很大(> 100000 /秒)时,很容易干扰写操作。 此时,使用离线压缩能够更稳定地执行压缩任务。
压缩任务的执行包括两个部分:计划压缩计划和执行压缩计划。 建议调度压缩计划的进程由写任务周期性触发,默认情况下写参数compact.schedule.enable为启用状态。
离线压缩需要在命令行上提交Flink任务。 程序入口如下: hudi-flink-bundle_2.12-0.9.0.jar
: org.apache.hudi.sink.compact.HoodieFlinkCompactor
命令行:
./bin/flink run -c org.apache.hudi.sink.compact.HoodieFlinkCompactor lib/hudi-flink-bundle_2.11-0.9.0.jar --path hdfs://xxx:9000/table
相关参数:
参数名 | 是否必须 | 默认值 | 参数含义 |
---|---|---|---|
--path |
frue |
-- |
存储在hudi上的表的路径 |
--compaction-max-memory |
false |
100 |
压缩期间日志数据的索引映射大小,默认为100 MB。 如果您有足够的内存,您可以打开这个参数 |
--schedule |
false |
false |
是否执行调度压缩计划的操作。 当写进程仍在写时,打开此参数有丢失数据的风险。 因此,开启该参数时,必须确保当前没有写任务向该表写入数据 |
--seq |
false |
LIFO |
压缩任务执行的顺序。 默认情况下从最新的压缩计划执行。 LIFI:从最新的计划开始执行。 FIFO:从最古老的计划执行。 |
本文为从大数据到人工智能博主「xiaozhch5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://lrting.top/backend/2011/