“hoodie.parquet.max.file.size”和“hoodie.parquet.small.file.limit”属性被忽略

问题描述 投票:0回答:1

我希望我的连帽衫文件大小在

small=50MB
max=100MB
之间。

以下配置用作更新插入的地图选项:

val hudiOptions = Map[String, String](
      HoodieWriteConfig.TBL_NAME.key -> hudiTableConfig.tableName,
      DataSourceWriteOptions.TABLE_TYPE.key -> DataSourceWriteOptions.COW_TABLE_TYPE_OPT_VAL,
      DataSourceWriteOptions.RECORDKEY_FIELD.key() -> hudiTableConfig.recordKey,
      DataSourceWriteOptions.PRECOMBINE_FIELD.key() -> hudiTableConfig.combineKey,
      "hoodie.parquet.max.file.size" -> "125829120",
      "hoodie.parquet.small.file.limit" -> "52428800")

updatedDataFrame.write
      .format(HudiConstants.HudiFormat)
      .options(hudiOptions)
      .option(DataSourceWriteOptions.OPERATION.key(), DataSourceWriteOptions.UPSERT_OPERATION_OPT_VAL)
      // .option("hoodie.upsert.shuffle.parallelism", "200") // Default shuffle parallelism is 200
      .mode(saveMode.get)
      .save(s"$storageSystemPath/${hudiTableConfig.tableName}/")

我的输入 df 是按日期分区的,大小如下:

date=2024-03-07 -> 1.00 GB
date=2024-03-06 -> 52.2 MB
date=2024-03-06 -> 54.4 MB
date=2024-03-06 -> 60 MB

阅读并更新后,我不断获得 11.7MB 的文件:

有什么建议哪里出了问题吗?

scala apache-spark apache-spark-sql apache-hudi
1个回答
0
投票

根据您的详细信息,我假设您仅在表中更新插入一次,即一次提交。

对于调整文件大小,hudi 使用之前的提交统计信息来了解工作负载(当前表的行通常大小)。

因此,您会期望 hudi 在几次提交后收敛到指定的大小。

© www.soinside.com 2019 - 2024. All rights reserved.