1.RDD的依赖关系
1.1 WordCount中的RDD
RDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency)。
1.2 窄依赖
窄依赖指的是每一个父RDD的Partition最多被子RDD的一个Partition使用
总结:窄依赖我们形象的比喻为独生子女
1.3 宽依赖
宽依赖指的是多个子RDD的Partition会依赖同一个父RDD的Partition
总结:窄依赖我们形象的比喻为超生
窄依赖:可以理解为独生子女
宽依赖:可以理解为超生
如上图所示,一个文件被textFile后经过两次转换,每次转换后生成的新的RDD都和原分区一一对应,为窄依赖关系。
当map算子计算失败时,可以直接去上一步的RDD中重新计算,而不需要其他的分区参与。但是如果最后的action算子在计算某个RDD时,计算失败,将会到上一层的多个分区中寻找依赖关系,比较麻烦。
stage解决了这个问题,它根据宽依赖和窄依赖的关系进行换分,如上图将存在窄依赖关系的RDD换分成为一个stage。
2. DAG的生成
2.1 什么是DAG
DAG(Directed Acyclic Graph)叫做有向无环图,原始的RDD