`
功夫小当家
  • 浏览: 183940 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spark - 宽依赖和窄依赖

阅读更多

(1)血缘关系:

通过血缘关系,可以知道一个RDD是如何从父RDD计算过来的

A  =map=> B =filter=> C

 

(2)窄依赖:一个父RDD的partition最多被子RDD中的partition使用一次(一父对应一子),窄依赖无shuffle

 



 

(3)宽依赖:

父RDD中的一个partition会被子RDD中的partition使用多次(一父多子)

宽依赖有shuffle,一个shuffle会拆成一个stage,2个shuffle拆成3个stage

 



 

以wordcount为例(reduceBykey是宽依赖,把stage拆为2个stage;stage序号从0开始,每个stage最后一个操作的名字作为整个stage的名字 ):

 

sc.textFile("/in/1.txt").flatMap(_.split("\t")).map((_,1)).reduceByKey(_+_).collect
 

 

分析:

wordcount例子里,reduceByKey相当于把相同的key分到一个partition上去,然后在partition上做加和,

因为并不是同一个相同key都在一个partition里,可能在不同机器上,所以需要有shuffle过程,reduceByKey在shuffle前本地会做一个预聚合

(4)会引起shuffle的操作



 

 

(5)spark中的join是宽依赖还是窄依赖?

co-partitioned 是窄依赖,其他是宽依赖

 

  • 大小: 23.4 KB
  • 大小: 20.9 KB
  • 大小: 52.6 KB
  • 大小: 10.6 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics