RDD:弹性分布式数据集
RDD的特点:
1、一系列的分片:比如说64M一片;类似于hadoop中的split;
2、在每个分片上都有一个函数去迭代/执行/计算它;
3、一系列的依赖:RDDa转化为RDDb,RDDb转化为RDDc,那么RDDc就依赖于RDDb,RDDb依赖于RDDa;
4、对于key-value的RDD可指定一个partitioner,告诉它如何切片;常用的有hash和range;
5、要运行的计算/执行最好是在那(几)台机器上运行。数据本地性。
为什么会有哪几个呢?
比如:hadoop默认有三个位置(副本);或者spark cache到内存是可以通过storageLevel设置了多个副本;
所以一个partition可能返回多个最佳位置;