Spark基础(a:谈谈你对rdd的理解,b:stage的划分过程)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/w5201314ws6123/article/details/88541333

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集合中,作为先后调用的先后顺序.

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页