火花笛卡儿不会引起洗牌?

时间:2016-08-01 23:56:18

标签: apache-spark pyspark rdd concept

因此,我尝试根据此stackoverflow帖子测试导致混乱的Spark操作:LINK。但是,当cartesian操作不会导致Spark中的混乱时,它对我来说没有意义,因为他们需要在网络中移动分区以便将它们放在本地。

Spark如何实际执行场景后面的cartesiandistinct操作?

1 个答案:

答案 0 :(得分:2)

Shuffle是一种特定于键值对(RDD[(T, U)]通常描述为PairRDDsPairwiseRDDs)的RDD的操作,并且或多或少等同于Hadoop中的shuffle阶段。 shuffle的目标是根据键值和Partitioner将数据移动到特定的执行器。

Spark中有不同类型的操作,它们需要网络流量,但不使用与shuffle相同类型的逻辑,并且不总是需要键值对。笛卡尔积是这些操作之一。它在机器之间移动数据(事实上它会导致更昂贵的数据移动),但不会在键和执行器之间建立关系。