大象教程
首页
Spark
Hadoop
HDFS
MapReduce
Hive
Spark 教程
Spark 教程
Spark 基本架构及运行原理
Spark 安装(本地模式)
Spark 安装(集群模式)
Spark Shell 的使用
使用Intellij idea编写Spark应用程序(Scala+Maven)
使用Intellij idea编写Spark应用程序(Scala+SBT)
SparkContext
Spark Stage
Spark Executor
Spark RDD
Spark RDD 的创建方式
Spark RDD 缓存机制
Spark 键值对 RDD
Spark RDD 基本操作
Spark RDD 依赖关系图
Spark Map 和 FlatMap 的比较
Spark DAG
Spark 集群管理器
Spark spark-submit 提交应用程序
Spark 共享变量
Spark SQL
Spark SQL 教程
Spark SQL 数据类型
Spark SQL DataFrame
Spark SQL 数据源
Spark SQL SparkSession
Spark SQL DataSet
RDD、DataFrame和DataSet的区别
Spark Streaming
Spark Streaming 教程
Spark Streaming DStream
Spark Streaming 检查点(checkpoint)
Spark GraphX
Spark GraphX 教程
Spark GraphX 图操作
Spark GraphX 算法实例
PySpark 教程
PySpark 教程
PySpark 环境设置
PySpark SparkContext
PySpark RDD
PySpark 广播和累加器
PySpark SparkConf
PySpark SparkFiles
PySpark 存储级别
PySpark MLlib
PySpark 序列化器
#Spark RDD 依赖关系图 当我们从其他RDD创建RDD的时候。新的RDD就与其父RDD建立了依赖关系。这种依赖关系以图数据结构的形式存储,我们把这种依赖关系图称为**RDD的血缘关系图**。 为了更好的理解RDD之间的依赖关系图,下面是通过Cartesian和zip函数生成RDD依赖关系图。 ![spark rdd 依赖关系图](/media/editor/file_1571151305000_20191015225509312932.png "spark rdd 依赖关系图") 这个依赖关系图生成过程如下: ```scala val r00 = sc.parallelize(0 to 9) val r01 = sc.parallelize(0 to 90 by 10) val r10 = r00 cartesian r01 val r11 = r00.map(n => (n, n)) val r12 = r00 zip r01 val r13 = r01.keyBy(_ / 20) val r20 = Seq(r11, r12, r13).foldLeft(r10)(_ union _) ``` 我们可以执行`toDebugString`打印RDD的依赖关系: ```scala scala> r00.toDebugString res5: String = (20) ParallelCollectionRDD[0] at parallelize at
:27 [] scala> r01.toDebugString res6: String = (20) ParallelCollectionRDD[1] at parallelize at
:27 [] scala> r12.toDebugString res9: String = (20) ZippedPartitionsRDD2[4] at zip at
:31 [] | ParallelCollectionRDD[0] at parallelize at
:27 [] | ParallelCollectionRDD[1] at parallelize at
:27 [] scala> r13.toDebugString res10: String = (20) MapPartitionsRDD[5] at keyBy at
:29 [] | ParallelCollectionRDD[1] at parallelize at
:27 [] scala> r20.toDebugString res11: String = (460) UnionRDD[8] at union at
:39 [] | UnionRDD[7] at union at
:39 [] | UnionRDD[6] at union at
:39 [] | CartesianRDD[2] at cartesian at
:31 [] | ParallelCollectionRDD[0] at parallelize at
:27 [] | ParallelCollectionRDD[1] at parallelize at
:27 [] | MapPartitionsRDD[3] at map at
:29 [] | ParallelCollectionRDD[0] at parallelize at
:27 [] | ZippedPartitionsRDD2[4] at zip at
:31 [] | ParallelCollectionRDD[0] at parallelize at
:27 [] | ParallelCollectionRDD[1] at parallelize at
:27 [] | MapPartitionsRDD[5] at keyBy at
:29 [] | ParallelCollectionRDD[1] at parallelize at
:27 [] ``` ##toDebugString 函数原型: ```scala def toDebugString: String ``` 通过此函数可以获取RDD的Lineage打印输出。 ##设置打印Lineage 参数:`spark.logLineage` 默认值:`false` 设置为true时,会在执行中打印出RDD的Lineage。
加我微信交流吧