官方的解释
-
reparation
返回一个具有恰好numPartitions分区的新RDD。
可以增加或减少此RDD中的并行级别。在内部,reparation会使用shuffle来重新分发的数据。
如果要减少此RDD中的分区数量,请考虑使用coalesce,这样可以避免执行shuffle。 -
coalesce
返回一个新的RDD,该RDD被减少为numPartitions分区。
这导致了窄依赖,例如,如果从1000个分区到100个分区,将不会出现shuffle,而是100个新分区中的每一个都将占用当前分区的10个。如果请求更大数量的分区,它将保持在当前的分区数量。
然而,如果您正在进行剧烈的coalesce,例如numPartitions=1,这可能会导致您的计算在比您预想的更少的节点上进行(例如,在numPartitions=1的情况下是一个节点)。为了避免这种情况,您可以传递shuffle=true。这将添加一个shuffle步骤,但意味着当前上游分区将并行执行(无论当前分区是什么)。当shuffle设置为true时,