我有一个带有 2 个 Parquet 文件的冰山表,在 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。
- 这可以是 configured via
min-input-files
作为一个选项。
- 这可以是 configured via
- Iceberg 不会跨分区压缩文件,因为一个文件必须 1:1 映射到分区值的元组。
- 举个例子:对于由 col1 和 col2 分区的表,col1=A 和 col2=1 的文件不能与 col1=A 和 col2=4 的文件压缩
在您的情况下,如果将 min-input-files
设置为 2,前提是文件属于同一分区或表未分区,则文件应压缩在一起。
关于apache-spark - 为什么 Iceberg rewriteDataFiles 不将文件重写为一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72362044/