因此,我尝试根据此stackoverflow帖子测试导致混乱的Spark操作:LINK。但是,当cartesian
操作不会导致Spark中的混乱时,它对我来说没有意义,因为他们需要在网络中移动分区以便将它们放在本地。
Spark如何实际执行场景后面的cartesian
和distinct
操作?
答案 0 :(得分:2)
Shuffle是一种特定于键值对(RDD[(T, U)]
通常描述为PairRDDs
或PairwiseRDDs
)的RDD的操作,并且或多或少等同于Hadoop中的shuffle阶段。 shuffle的目标是根据键值和Partitioner
将数据移动到特定的执行器。
Spark中有不同类型的操作,它们需要网络流量,但不使用与shuffle相同类型的逻辑,并且不总是需要键值对。笛卡尔积是这些操作之一。它在机器之间移动数据(事实上它会导致更昂贵的数据移动),但不会在键和执行器之间建立关系。