[spark] coalesce() 和 repartition()的区别
coalesce(1) 的主要作用是将数据合并到尽可能少的分区中,而 repartition(1) 则是将数据随机重分区为一个分区。这使得 coalesce(1) 相对而言更加高效,因为它减少了数据移动的次数,只需要在当前 Executor 上将所有分区的数据都收集到当前应用程序的单个 Executor 中。而 repartition(1) 则需要进行大量的数据移动和 shuffle 操作,这会增加应用程序的开销并增加运行时间。
因此,如果只是将数据合并到一个分区中,并不需要生成新的 RDD 或重新分配数据分区,则应该使用 coalesce(1)。但是,如果希望将数据重新分区为一个分区,或者想要生成新的 RDD,需要使用 repartition(1)。
总的来说,如果数据量较大,使用 coalesce(1) 比使用 repartition(1) 更高效。如果数据较小,则两种方法可能效率相当,但是 coalesce(1) 仍然是更好的选择,因为它可以减少不必要的 shuffle 操作和数据移动。
本文来自博客园,作者:家有花猪,转载请注明原文链接:https://www.cnblogs.com/afra17/p/17898413.html

浙公网安备 33010602011771号