火花笛卡尔不会引起洗牌?
Spark cartesian doesn't cause shuffle?
因此,我尝试基于此 Whosebug post:LINK 测试导致混洗的 Spark 操作。但是,当 cartesian
操作不会导致 Spark 中的混洗时,这对我来说没有意义,因为他们需要在网络上移动分区以便在本地将它们放在一起。
Spark 实际上是如何在幕后执行其 cartesian
和 distinct
操作的?
Shuffle 是键值对(RDD[(T, U)]
通常被描述为 PairRDDs
或 PairwiseRDDs
)的 RDDs 特有的操作,或多或少等同于 shuffle 阶段哈多普。 shuffle 的一个目标是根据键值和 Partitioner
.
将数据移动到特定的执行器
Spark 中有不同类型的操作,需要网络流量,但不要使用与 shuffle 相同类型的逻辑,并不总是需要键值对。笛卡尔积是这些操作之一。它在机器之间移动数据(实际上它会导致更昂贵的数据移动)但不会在密钥和执行程序之间建立关系。
因此,我尝试基于此 Whosebug post:LINK 测试导致混洗的 Spark 操作。但是,当 cartesian
操作不会导致 Spark 中的混洗时,这对我来说没有意义,因为他们需要在网络上移动分区以便在本地将它们放在一起。
Spark 实际上是如何在幕后执行其 cartesian
和 distinct
操作的?
Shuffle 是键值对(RDD[(T, U)]
通常被描述为 PairRDDs
或 PairwiseRDDs
)的 RDDs 特有的操作,或多或少等同于 shuffle 阶段哈多普。 shuffle 的一个目标是根据键值和 Partitioner
.
Spark 中有不同类型的操作,需要网络流量,但不要使用与 shuffle 相同类型的逻辑,并不总是需要键值对。笛卡尔积是这些操作之一。它在机器之间移动数据(实际上它会导致更昂贵的数据移动)但不会在密钥和执行程序之间建立关系。