流式读Hudi表开发规范
流式读Hudi参数说明
参数名称 |
参数描述 |
建议值 |
说明 |
---|---|---|---|
Connector |
读取表类型。 |
hudi |
必填 |
Path |
表存储的路径。 |
根据实际填写 |
必填 |
table.type |
Hudi表类型:
|
COPY_ON_WRITE |
必填 |
hoodie.datasource.write.recordkey.field |
表的主键。 |
根据实际填写 |
必填 |
write.precombine.field |
数据合并字段。 |
根据实际填写 |
必填 |
read.tasks |
读Hudi表的task并行度,默认值:4。 |
4 |
选填 |
read.streaming.enabled |
是否开启流式增量模式:
|
true |
必填 |
read.streaming.start-commit |
|
- |
选填 |
hoodie.datasource.write.keygenerator.type |
上游表主键生成类型:
|
COMPLEX |
选填 |
read.streaming.check-interval |
流读监测上游新提交的周期(分钟),流量大时建议使用默认值,默认值:1。 |
5 |
选填 |
read.end-commit |
Batch增量消费,通过参数“read.streaming.start-commit”指定起始消费位置,通过参数“read.end-commit”指定结束消费位置,为闭区间,即包含起始、结束的Commit,默认到最新Commit。 |
- |
选填 |
read.rate.limit |
流读Hudi的限流速率,单位为每秒的条数。默认值:0,表示不限速。该值为总限速大小,每个算子的限速大小需除以读算子个数(read.tasks)。 |
- |
选填 |
changelog.enabled |
是否写入Changelog消息:
|
false |
选填 |
hoodie.datasource.write.hive_style_partitioning |
是否使用Hive风格的分区格式: |
- |
选填 |
流式读Hudi开发建议
- 建议Hudi作为Source表时设置限流
Hudi表作为Source表时,为防止数据上限超过流量峰值导致作业出现异常,建议设置限流(read.rate.limit),限流上限应该为业务上线压测的峰值。
- 及时对Hudi表进行Compaction,防止Hudi source算子checkpoint完成时间过长
当Hudi Source算子checkpoint完成时间长时,检查该Hudi表Compaction是否正常。因为当长时间不做Compaction时list性能会变差。
- 流读Hudi MOR表时,建议开启log index特性提升Flink流读性能
Hudi的Mor表可以通过log index提升读写性能, Sink和Source表添加属性 'hoodie.log.index.enabled'='true'
- DDL变更对流读Hudi表的影响
DDL添加列对Hudi表读取作业无影响。其他DDL变更(如修改列类型、修改列名、删除列)影响Hudi表读取作业,需要在变更前停止作业。