源码注释
* - A list of partitions
* - A function for computing each split
* - A list of dependencies on other RDDs
* - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
* - Optionally, a list of preferred locations to compute each split on (e.g. block locations for
* an HDFS file)
一、RDD是一个分片的数据集合;
1)、RDD的分片数决定并行计算的粒度;
2)、RDD的分片数可以在创建RDD时指定,其默认值为当前job分配到的CPU核数。
二、RDD的函数针对每个分片进行计算;
1)、RDD每个分片是单独进行计算的。
三、RDD之间是个依赖的集合;
1)、中间过程的RDD都是由RDD转换而来,RDD之间是有着单向无环依赖关系的;
2)、RDD的依赖分为窄依赖和宽依赖的,shuffle过程是宽依赖产生的;
3)、任务的阶段是按照shuffle过程来划分的,宽依赖过程是性能瓶颈主要所在。
四、可选:key-value型RDD是根据哈希来分区的;
1)、分片函数:基于哈希的HashPartitioner和基于范围的RangePartitioner;
2)、非key-value的RDD的Partitioner的值为None;
3)、Partitioner函数决定了RDD的分片数量和Shuffle输出时的分片数量。
五、可选:数据本地性优先计算。
1)、数据本地性级别从高至低分别为:PROCESS_LOCAL、NODE_LOCAL、NO_PREF、RACK_LOCAL、ANY;
2)、数据本地性级别也是计算性能的关键所在。
* - A list of partitions
* - A function for computing each split
* - A list of dependencies on other RDDs
* - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
* - Optionally, a list of preferred locations to compute each split on (e.g. block locations for
* an HDFS file)
一、RDD是一个分片的数据集合;
1)、RDD的分片数决定并行计算的粒度;
2)、RDD的分片数可以在创建RDD时指定,其默认值为当前job分配到的CPU核数。
二、RDD的函数针对每个分片进行计算;
1)、RDD每个分片是单独进行计算的。
三、RDD之间是个依赖的集合;
1)、中间过程的RDD都是由RDD转换而来,RDD之间是有着单向无环依赖关系的;
2)、RDD的依赖分为窄依赖和宽依赖的,shuffle过程是宽依赖产生的;
3)、任务的阶段是按照shuffle过程来划分的,宽依赖过程是性能瓶颈主要所在。
四、可选:key-value型RDD是根据哈希来分区的;
1)、分片函数:基于哈希的HashPartitioner和基于范围的RangePartitioner;
2)、非key-value的RDD的Partitioner的值为None;
3)、Partitioner函数决定了RDD的分片数量和Shuffle输出时的分片数量。
五、可选:数据本地性优先计算。
1)、数据本地性级别从高至低分别为:PROCESS_LOCAL、NODE_LOCAL、NO_PREF、RACK_LOCAL、ANY;
2)、数据本地性级别也是计算性能的关键所在。