a:
1>弹性分布式数据集,不可变的数据集,所谓分布式:数据分布在不同的节点,并行计算,弹性:可以指定分区,可以进行数据缓存,并对数据指定不同级别的缓存,
2>数据是可以分区的,每一个分区都被映射成bolck,都有自己的block_id,被blockmanager所管理,默认的分区数是由系统的cpu core所决定的.
3>每一个分区都会被我们定义的函数所执行,底层主要调用compute方法,返回的结构构成新的rdd集,rdd一旦创建只能通过transformation 改变
4>rdd之间存在这夸依赖和窄依赖,夸依赖是Dagscheduler划分stage的重要依据,在宕机之后需要数据恢复的时候,宽依赖和窄依赖拥有不同的恢复策略.,夸依赖支持hashshuffle和sortshuffle
b:
1>Dagscheduler会调用handlejob.submitted找到最后一个rdd(finalrdd),
2>根据Dag图沿着rdd生命线向前一次遍历,
3>在遍历的过程中,如果出现shuffle rdd,就作为stage的划分依据,进行stage的划分,直到遍历到第一个rdd为止
4>在遍历完整个Rdd的生命线,根据rdd的生命线建立stage与stage的关系,并放到list集合中,作为先后调用的先后顺序.