
# Hudi表初始化
- 初始化导入存量数据通常由Spark作业来完成，由于初始化数据量通常较大，因此推荐使用API方式给充足资源来完成。
- 对于批量初始化后需要接Flink或Spark流作业实时写入的场景，一般建议通过对上游消息进行过滤，从一个指定的时间范围开始消费来控制数据的重复接入量（例如Spark初始化完成后，Flink消费Kafka时过滤掉2小时之前的数据），如果无法对kafka消息进行过滤，则可以考虑先实时接入生成offset，再truncate table ，再历史导入，再开启实时。
图1初始化操作流程   
![](https://support.huaweicloud.com/sqlref-hudi-dli/zh-cn_image_0000002143229213.png "点击放大")
![](https://support.huaweicloud.com/sqlref-hudi-dli/public_sys-resources/note_3.0-zh-cn.png)
- 如果批量初始化前表里已经存在数据且没有truncate table，则会导致批量数据写成非常大的log文件，对后续compaction形成很大压力需要更多资源才能完成。
- Hudi表在Hive元数据中，应该会存在1张内部表（手动创建），2张外部表（写入数据后自动创建）。
- 2张外部表，表名_ro（用户只读合并后的parquet文件，即读优化视图表），_rt（读实时写入的最新版本数据，即实时视图表）。
 
