目录
- 1. 目标
- 2. Auto-Size During ingestion
- 2.1 For Copy-On-Write
- 2.2 For Merge-On-Read
- 3. Auto-Size With Clustering
注意:HDFS上的文件永远是不变的。将数据写入小文件,是通过将数据与小文件合并,生成一个new version file
1. 目标Hudi通过控制file的大小,来避免创建过多的小文件。有两种方法:
- Auto-Size During ingestion
- Auto-Size With Clustering
可以在数据插入的时候,控制file大小,会增加数据插入的延迟
bulk_insert不能进行File Auto-Size
2.1 For Copy-On-Write通过以下参数进行配置
hoodie.parquet.max.file.size
:默认是125829120,最好是HDFS文件block的倍数hoodie.parquet.small.file.limit
:默认是104857600(100MB),如果file大小小于该值,则会将新的数据写入该文件,而不是创建新的file
通过以下参数进行配置
hoodie.logfile.max.size
:默认是1073741824 ,log file的最大文件大小hoodie.logfile.to.parquet.compression.ratio
:默认是0.35,log file被compaction到parquet文件的压缩率
Clustering service周期性的对小文件进行合并,在合并的时候,数据查询会很慢