rdd:resiliient distributed datasets 弹性分布式数据集,不可变的、分区的
resiliient :顾名思义弹性,可以存在给定不用数目的分区、数据缓存的时候可以缓存一部分数据,也可以缓存全部数据
distributed:分区可以分布到不同的executor执行(executor也就是不用的work/nodemanager上)
datasets : 内部存储的数据
RDD五大特性:
1:是多个分区的集合
2:每一个分区上都应用一个函数进行计算
3:一系列的依赖关系
4:针key-value的RDD,我们可以指定分区函数(指定每个分区内存储哪个RDD,类似于map后,指定分区,reduce)
5:数据本地化:处理RDD的每个分片,split数据在哪里,尽量在该机器上计算。(移动计算,而不是移动数据)
RDD构建原理:
1、rdd分区数量:InputFormate.getSplite方法返回的集合中的split数量,也就是block块的数量
2、rdd中不包含数据,只有数据的位置信息,执行需要的时候拉去过来使用