我有一个冰山表,有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();
但没有改变。我做错了什么?
几点注意事项:
- Iceberg默认情况下不会压缩文件,除非每个文件组和每个分区可以压缩最小数量的小文件。默认值是5。
- 这可以通过
min-input-files
作为选项配置。
- 这可以通过
- Iceberg不会跨分区压缩文件,因为一个文件必须1:1映射到分区值的元组。
- 例如:对于由col1和col2分区的表,col1= a和col2=1的文件不能与col1= a和col2=4的文件进行压缩
在您的示例中,如果将min-input-files
设置为2,那么如果文件是同一分区的一部分或者表没有分区,则应该将这些文件压缩在一起。