步骤4:一旦所有小文件写到最大容量,并且如果还有未分配的插入,就会创建新的文件组/数据文件,并把剩下的数据写到这些新创建的文件组/数据文件中。每个新数据文件的记录数量由 hoodie.copyonwrite.insert.split.size 配置确定。假设 hoodie.copyonwrite.insert.split.size 配置为120k,如果有剩余 300k 条记录,那么将创建3个新文件,其中2个(File_6 和 File_7)将填充 120k 条记录,最后一个(File_8)将填充 60k 条记录(假设每条记录为 1000 字节)。在未来的摄取中,第三个新文件(File_8)将被视为是一个小文件,用于存储更多的数据。
Hudi 利用自定义分区等机制来优化记录分发到不同的文件,执行上述算法。在这一轮摄取完成后,除 File_8 之外的所有文件都被很好地调整到最佳大小。 在每次摄取期间都遵循此过程,以确保 Hudi 表中没有小文件。
本文翻译自:How Apache Hudi maintains optimum sized files
本博客文章除特别声明,全部都是原创!