1. shufflespark 重新分配数据的一种机制,它使得这些数据可以跨不同区域进行分组

      • 这通常涉及到在executor 和驱动器程序之间拷贝数据,使得shuffle 成为一个复杂的、代价高昂的操作
    2. spark 里,特定的操作需要数据不会跨分区分布。如果跨分区分别,则需要混洗。

      reduceByKey 操作的过程为例。一个面临的挑战是:一个key 的所有值不一定在同一个分区里,甚至不一定在同一台机器里。但是它们必须共同被计算。

    3. 混洗是一个代价比较高的操作,它涉及到磁盘,数据序列化,网络IO

      • 某些混洗操作会大量消耗堆内存空间,因为混洗操作在数据转换前后,需要使用内存中的数据结构对数据进行组织

      • 混洗操作还会在磁盘上生成大量的中间文件。