RDD依赖关系1。RDD血缘关系 RDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。 查看RDD的血缘方法:rdd。toDebugString 示例description:RDD血缘依赖author:HaoWucreate:2020年08月04日objectDependeciedTest{defmain(args:Array〔String〕):Unit{valconfnewSparkConf()。setAppName(RDDTest)。setMaster(local〔〕)valscnewSparkContext(conf)valrdd1sc。makeRDD(List(1,2,3,4))。map(xx)println(rdd1。toDebugString)println()valrdd2rdd1。map(xx)println(rdd2。toDebugString)println()valrdd3rdd2。groupBy(xx)println(rdd3。toDebugString)println()rdd3。collect()}} 结果(8)MapPartitionsRDD〔1〕atmapatDependeciedTest。scala:15〔〕ParallelCollectionRDD〔0〕atmakeRDDatDependeciedTest。scala:15〔〕(8)MapPartitionsRDD〔2〕atmapatDependeciedTest。scala:18〔〕MapPartitionsRDD〔1〕atmapatDependeciedTest。scala:15〔〕ParallelCollectionRDD〔0〕atmakeRDDatDependeciedTest。scala:15〔〕(8)ShuffledRDD〔4〕atgroupByatDependeciedTest。scala:21〔〕(8)MapPartitionsRDD〔3〕atgroupByatDependeciedTest。scala:21〔〕MapPartitionsRDD〔2〕atmapatDependeciedTest。scala:18〔〕MapPartitionsRDD〔1〕atmapatDependeciedTest。scala:15〔〕ParallelCollectionRDD〔0〕atmakeRDDatDependeciedTest。scala:15〔〕2。依赖关系 依赖关系:当前RDD和和父RDD之间的依赖关系 查看依赖关系方法:rdd。dependencies 示例description:RDD依赖关系author:HaoWucreate:2020年08月04日objectDependeciedTest{defmain(args:Array〔String〕):Unit{valconfnewSparkConf()。setAppName(RDDTest)。setMaster(local〔〕)valscnewSparkContext(conf)valrdd1sc。makeRDD(List(1,2,3,4))println(rdd1。dependencies)println()valrdd2rdd1。map(xx)println(rdd2。dependencies)println()valrdd3rdd2。groupBy(xx)println(rdd3。dependencies)println()rdd3。collect()}} 结果不依赖于任何RDDList()1对1(1父1子)依赖(窄依赖),窄依赖不会划分StageList(org。apache。spark。OneToOneDependency1eaf1e62)1对N(1父多子)依赖(宽依赖或shuffle依赖),宽依赖会划分StageList(org。apache。spark。ShuffleDependency5fad41be)3。RDD的宽窄依赖窄依赖(NarrowDependency)每一个父RDD的Partition只能被子RDD的一个Partition使用,窄依赖我们形象的比喻为独生子女。宽依赖(ShuffleDependency)同一个父RDD的Partition被多个子RDD的Partition依赖,会引起Shuffle,宽依赖我们形象的比喻为多生。4。任务划分 RDD任务切分中间分为:Application、Job、Stage和TaskApplication:初始化一个SparkContext即生成一个AJob:一个Action算子就会生成一个JStage:Stage等于宽依赖(ShuffleDependency)的个数加1;Task:一个Stage阶段中,最后一个RDD的分区个数就是Task的个数。 注意:ApplicationJobStageTask每一层都是1对n的关系。