Apache Spark 和 Hudi:大量输出文件

问题描述

我正在尝试从许多不同的 .csv 文件(都具有相同的“结构”)中读取数据,使用 Spark 执行一些操作,最后将它们保存为 Hudi 格式。
要将数据存储在同一个 Hudi 表中,我认为最好的方法是在执行写入时使用 append 方法
问题是这样做会创建大量的小文件,其总维数远远超过输入数据集的大小(在某些情况下为 10 倍)。

这是我对 Hudi 的配置:

hudi_options = {
  'hoodie.table.name': tableName,'hoodie.datasource.write.recordkey.field': 'uuid','hoodie.datasource.write.partitionpath.field': 'main_partition','hoodie.datasource.write.table.name': tableName,'hoodie.datasource.write.operation': 'upsert','hoodie.datasource.write.precombine.field': 'ts','hoodie.upsert.shuffle.parallelism': 10,'hoodie.insert.shuffle.parallelism': 10,'hoodie.delete.shuffle.parallelism': 10
}

虽然写操作是这样执行的:

result_df.write.format("hudi").options(**hudi_options).mode("append").save(basePath)

其中 result_df 是一个 Spark 数据帧,具有始终相同的架构,但具有不同的数据,并且 basePath 是恒定的。
我检查了输出文件内容,它们具有正确的架构/数据。那么,有没有办法将数据附加到同一个 Hudi 表文件中?

我对 apache Spark 和 Hudi 还很陌生,所以任何帮助/建议将不胜感激;-)

解决方法

请提出github issue(httsp://github.com/apache/hudi/issues)以获得社区及时回复