Spark合并更多分区

时间:2016-06-02 16:53:05

标签: apache-spark rdd coalesce

我有一个处理大量数据并将结果写入S3的spark作业。在处理过程中,我可能有超过5000个分区。在写入S3之前,我想减少分区数,因为每个分区都写成文件。

在其他一些情况下,我在处理过程中可能只有50个分区。如果由于性能原因我想要合并而不是重新分配会发生什么。

从文档中可以看出,只有当输出分区的数量小于输入时才会使用合并,但如果输出分区的数量不是,则会发生什么,它似乎不会导致错误?是否会导致数据不正确或出现性能问题?

我正在尝试避免必须对RDD进行计数,以确定我的分区是否超出输出限制,如果是这样的话,就会合并。

1 个答案:

答案 0 :(得分:3)

使用默认PartitionCoalescer,如果分区数大于当前分区数,并且您未将shuffle设置为true,则分区数保持不变。

另一方面将coalesce设置为shuffle的{​​p> true相当于repartition,其值为numPartitions