(RDD)Lineage 血缘关系 和 Dependence 依赖关系

1)Lineage 说明

    Lineage  保存了RDD的依赖关系

    如:有这样的依赖关系:A =map=> B =filter=>C 

           假设B的RDD某个分区挂了,就可以通过血缘关系重新计算map的函数获取回来

            即:一个RDD是如何从父RDD计算过来的 


2)假如某RDD的分区是通过几个分区reducebykey算出来的,这时候得几个一起计算,如图:

 

 

3)Denpendence 两种介绍

    Narrow 窄依赖 : 一个父RDD的partition至多被子RDD的某个partition使用一次  ,没有shuffle,容错和速度都很理想

    Wide 宽依赖:一个父RDD的partition会被子RDD的某个partition使用多次,有shuffle,挂掉要重算,性能差很多


4)窄依赖

    

    Q:Spark的join是窄依赖还是宽依赖?

    A:join with inputs co-partitioned是窄依赖,其余都是宽依赖    


5)宽依赖

      

    Wide 会产生Shuffle , 只要n个有shuffle,都会被拆成n+1个stage

    以下例子属于宽依赖:join  / xxbykey(通过key分发都会产生shuffle)


6)stage图解,以下为通过两个shuffle最终有3个stage的案例


 

7)wordcount stage变化图解



阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页