我有一个DataFrame
需要根据特定分区写入 S3 的内容。代码如下所示:
dataframe
.write
.mode(SaveMode.Append)
.partitionBy("year", "month", "date", "country", "predicate")
.parquet(outputPath)
将partitionBy
数据拆分为相当多的文件夹(~400),每个文件夹只有一点点数据(~1GB)。问题来了——因为默认值为spark.sql.shuffle.partitions
200,每个文件夹中1GB的数据被分割成200个parquet小文件,总共写入了大约80000个parquet文件。由于多种原因,这不是最佳选择,我想避免这种情况。
我当然可以将 设置spark.sql.shuffle.partitions
为一个小得多的数字,比如 10,但据我了解,此设置还控制连接和聚合中随机播放的分区数量,所以我真的不想更改它。
有谁知道是否有另一种方法来控制写入多少文件?