Iceberg表压缩是否合并小row-groups?能否控制row-group大小?
Iceberg对Parquet文件Row-Group的处理及大小控制
核心结论
- Iceberg在执行文件合并(如快照清理、数据重写)时,会将原文件中的小row-groups合并为更大的统一尺寸row-groups,不会保留原文件的row-group结构。
- Iceberg支持通过配置参数直接控制生成文件的row-group大小。
具体说明
Row-Group合并逻辑
当Iceberg执行文件重写操作时,它会读取原Parquet文件的所有数据,按照配置的row-group大小重新组织数据,再写入新文件。最终生成的合并文件会采用全新的row-group划分,而非简单拼接原文件的row-group,新文件通常包含多个尺寸均匀的row-group(而非单个)。Row-Group大小的配置方式
针对不同计算引擎,Iceberg提供了对应配置项:
- Spark环境:使用
spark.sql.parquet.rowGroupSize参数设置,单位为字节,例如134217728(对应128MB)。 - 通用Iceberg配置:可通过
write.parquet.row-group-size参数定义,该配置优先级通常高于引擎自身的Parquet默认设置。
这些配置会覆盖原文件的row-group设定,在所有写入操作(包括合并重写)中生效,以此优化查询性能和压缩效率。
内容的提问来源于stack exchange,提问作者teejay
相关产品推荐
相关产品推荐

