我有一个处理大量数据并将结果写入S3的spark作业。在处理过程中,我可能有超过5000个分区。在写入S3之前,我想减少分区数,因为每个分区都写成文件。
在其他一些情况下,我在处理过程中可能只有50个分区。如果由于性能原因我想要合并而不是重新分配会发生什么。
从文档中可以看出,只有当输出分区的数量小于输入时才会使用合并,但如果输出分区的数量不是,则会发生什么,它似乎不会导致错误?是否会导致数据不正确或出现性能问题?
我正在尝试避免必须对RDD进行计数,以确定我的分区是否超出输出限制,如果是这样的话,就会合并。
答案 0 :(得分:3)
使用默认PartitionCoalescer
,如果分区数大于当前分区数,并且您未将shuffle
设置为true
,则分区数保持不变。
coalesce
设置为shuffle
的{p> true
相当于repartition
,其值为numPartitions
。