从源码来看,RDD是被定义为了一个抽象基类,里面定义了像compute(计算分区),getPartitions(获取分片),getDependencies(获取依赖)等抽象函数及一系列基本函数(catch,persist,checkpointRDD)。然后具体的像 jdbcRDD, HadoopRDD, ShuffleRDD 等都继承自RDD并有份自己的实现。
[b][size=large] RDD的主要属性有以下部分组成:[/size][/b]
一组分片
一个计算分区的函数
RDD之间的依赖关系----------------->实现自动容错
一个分区函数
一个列表,一个分区优先位置-------------------->位置感知(本地化)
[b][size=x-large]RDD的弹性表现[/size][/b]
1、弹性之一:自动的进行内存和磁盘数据存储的切换;
2、弹性之二:基于Lineage的高效容错(第n个节点出错,会从第n-1个节点恢复,血统容 错);
3、弹性之三:Task如果失败会自动进行特定次数的重试(默认4次);
4、弹性之四:Stage如果失败会自动进行特定次数的重试(可以只运行计算失败的阶段);只计算失败的数据分片;
[b][size=large] RDD的主要属性有以下部分组成:[/size][/b]
一组分片
一个计算分区的函数
RDD之间的依赖关系----------------->实现自动容错
一个分区函数
一个列表,一个分区优先位置-------------------->位置感知(本地化)
[b][size=x-large]RDD的弹性表现[/size][/b]
1、弹性之一:自动的进行内存和磁盘数据存储的切换;
2、弹性之二:基于Lineage的高效容错(第n个节点出错,会从第n-1个节点恢复,血统容 错);
3、弹性之三:Task如果失败会自动进行特定次数的重试(默认4次);
4、弹性之四:Stage如果失败会自动进行特定次数的重试(可以只运行计算失败的阶段);只计算失败的数据分片;