在Spark中,广泛的依赖和随机播放是否总是同时发生?

时间:2017-05-03 00:02:53

标签: apache-spark dependencies shuffle

我正在阅读一本火花书,很难理解下面的一句话。对我来说,我无法想象一个广泛依赖的案例,但我们不需要洗牌。谁能举个例子呢?

"在某些情况下,例如,当Spark已经知道数据以某种方式进行分区时,具有广泛依赖性的操作不会导致混乱。" - "高性能火花"作者:Holden Karau

1 个答案:

答案 0 :(得分:3)

RDD依赖性实际上是根据分区以及如何创建分区。

注意:以下定义是为了便于理解:

如果RDD的每个分区仅从单个RDD的一个分区创建,则它是窄依赖

另一方面,如果RDD中的分区是从多个分区(来自相同或不同的RDD)创建的,则它是广泛依赖

只要创建分区所需的数据不在一个地方,就需要随机操作(这意味着必须从不同的位置/分区获取)。

如果数据已经分组在一个或多个分区中(使用groupBy,partitionBy等操作),则只需从每个分区中取出相应的项目并合并它们即可。在这种情况下,不需要随机播放。

有关详细信息,请参阅this,尤其是可视化示例图片。