更新时间:2024-12-25 GMT+08:00
Hudi表初始化
- 初始化导入存量数据通常由Spark作业来完成,由于初始化数据量通常较大,因此推荐使用API方式给充足资源来完成。
- 对于批量初始化后需要接Flink或Spark流作业实时写入的场景,一般建议通过对上有消息进行过滤,从一个指定的时间范围开始消费来控制数据的重复接入量(例如Spark初始化完成后,Flink消费Kafka时过滤掉2小时之前的数据),如果无法对kafka消息进行过滤,则可以考虑先实时接入生成offset,再truncate table ,再历史导入,再开启实时。
图1 初始化操作流程
- 如果批量初始化前表里已经存在数据且没有truncate table,则会导致批量数据写成非常大的log文件,对后续compaction形成很大压力需要更多资源才能完成。
- Hudi表在Hive元数据中,应该会存在1张内部表(手动创建),2张外部表(写入数据后自动创建)。
- 2张外部表,表名_ro(用户只读合并后的parquet文件,即读优化视图表),_rt(读实时写入的最新版本数据,即实时视图表)。
父主题: Bucket调优示例