为什么 Iceberg 重写数据文件不会将文件重写为一个文件?



我有一个冰山表,有2个parquets文件,存储在s3中的4行我尝试了以下命令:

val tables = new HadoopTables(conf);
val table = tables.load("s3://iceberg-tests-storage/data/db/test5");    
SparkActions.get(spark).rewriteDataFiles(table).option("target-file-size-bytes", "52428800").execute();

但没有改变。我做错了什么?

几点注意事项:

  1. Iceberg默认情况下不会压缩文件,除非每个文件组和每个分区可以压缩最小数量的小文件。默认值是5。
    • 这可以通过min-input-files作为选项配置。
  2. Iceberg不会跨分区压缩文件,因为一个文件必须1:1映射到分区值的元组。
    • 例如:对于由col1和col2分区的表,col1= a和col2=1的文件不能与col1= a和col2=4的文件进行压缩

在您的示例中,如果将min-input-files设置为2,那么如果文件是同一分区的一部分或者表没有分区,则应该将这些文件压缩在一起。

最新更新