美文网首页
图解RDD血缘关系

图解RDD血缘关系

作者: heasy | 来源:发表于2019-12-17 08:30 被阅读0次
    • 需求

    有三个RDD ,分别是 rddA,rddB,rddC.取数据1,2,3,4,5并且分成三个分区,对输入的数据的每一个数据*2 ,只取大于 6 的数据.

    • 代码
      val rddA = sc.parallelize(List(1, 2, 3, 4, 5),3)
      //rddA: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0]
      val rddB = rddA.map(_*2)
      //rddB: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[1]
      val rddC = rddB.filter(_>6)
      //rddC: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[2]
      rddC.collect()
      //res0: Array[Int] = Array(8, 10)
    
    • 图解


      rdd 血缘关系图
    • idea调试查看


      idea查看依赖关系
    • 通过 spark web ui 查看


      spark-web-ui 依赖关系
    • 补充
      使用代码rddC.toDebugString打印依赖关系

    res1: String =
    (2) MapPartitionsRDD[2] at filter at <console>:25 []
     |  MapPartitionsRDD[1] at map at <console>:25 []
     |  ParallelCollectionRDD[0] at parallelize at <console>:24 []
    

    窄依赖

    • 说明:父RDD的每个分区只被一个子RDD分区使用一次
    • 窄依赖有分为两种:
    • 1.一种是一对一的依赖,即OneToOneDependency
    • 2.还有一个是范围的依赖RangeDependency,它仅仅被org.apache.spark.rdd.UnionRDD使用。UnionRDD是把多个RDD合成一个RDD,这些RDD是被拼接而成,每个父RDD的Partition的相对顺序不会变,只不过每个父RDD在UnionRDD中的Partition的起始位置不同
    • 常见算子
      map, filter, union, join, mapPartitions, mapValues
    • 图解


      窄依赖

    宽依赖

    • 说明:父RDD的每个分区都有可能被多个子RDD分区使用,子RDD分区通常对应父RDD所有分区
    • 常见会对应Shuffle的操作.在会 job中产生一个stage
    • groupByKey, join,partitionBy,reduce
    • 常见算子
    • 图解


      宽依赖

    wordCountDemo演示

      val path = "/user/spark/data/wc.txt"
        val lines = sc.textFile(path, 3)
        //查看每个分区的数据
        //    lines.mapPartitionsWithIndex((n, partition) => {
        //      partition.map(x => (s"分区编号${n}", s"分区数据${x}"))
        //    }).foreach(println)
        
        val words = lines.flatMap(_.split(","))
        val wordPair = words.map(x => (x, 1))
        val result = wordPair.reduceByKey(_ + _)
        result.collect().foreach(println)
    
    
    • 图解


      RDDWordCount

    如果觉得文章不错的话记得关注下公号哦


    公众号

    相关文章

      网友评论

          本文标题:图解RDD血缘关系

          本文链接:https://www.haomeiwen.com/subject/tinjnctx.html