1. 摘要
Apache Hudi除了支持insert
和upsert
外,还支持bulk_insert
操作将数据摄入Hudi表,对于bulk_insert
操作有不同的使用模式,本篇博客将阐述bulk_insert
不同的模式以及与其他操作的比较。
Apache Hudi支持bulk_insert
操作来将数据初始化至Hudi表中,该操作相比insert
和upsert
操作速度更快,效率更高。bulk_insert
不会查看已存在数据的开销并且不会进行小文件优化。
bulk_insert
按照以下原则提供了3种模式来满足不同的需求
•如果数据布局良好,排序将为我们提供良好的压缩和upsert
性能。特别是记录键具有某种排序(时间戳等)特征,则排序将有助于在upsert期间裁剪大量文件,如果数据是按频繁查询的列排序的,那么查询将利用parquet谓词下推来裁剪数据,以确保更低的查询延迟。•写parquet文件是内存密集型操作。当将大量数据写入一个也被划分为1000个分区的表中时,如果不进行任何排序,写入程序可能必须保持1000个parquet写入器处于打开状态,同时会产生不可持续的内存压力,并最终导致崩溃。
•在批量导入数据时,最好控制好少的文件个数,以避免以后写入和查询时的元数据开销。
3种开箱即用的模式为:PARTITION_SORT
、GLOBAL_SORT
、NONE
2. 配置
可以通过hoodie.bulk