RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据处理模型
。代码中是一个抽象类,它代表一个弹性的、不可变的、可分区、元素可并行计算的集合。
- 弹性
- 存储的弹性:内存与磁盘的自动切换。Spark在执行任务的时候会将数据放在内存中,提高效率。但是不能占满内存,这时候就会自动切换为磁盘存储了;
- 容错的弹性:数据丢失可以自动恢复。根据血缘自动恢复;
- 计算的弹性:计算出错重试机制。出错了可以根据之前的逻辑进行重试;
- 分片的弹性:可根据需要重新分片。比如根据executor数重新进行分区,以提高资源利用率和效率;
- 分布式:数据存储在大数据集群不同节点上
- 数据集:RDD封装了计算逻辑,并不保存数据
- 数据抽象:RDD是一个抽象类,需要子类具体实现
- 不可变:RDD封装了计算逻辑,是不可变的,想要改变,只能产生新的RDD,在新的RDD里面封装计算逻辑
- 可分区、并行计算
RDD核心属性
- 分区列表
RDD数据结构中存在分区列表,用于执行任务时并行计算,是实现分布式计算的重要属性。 - 分区计算函数
Spark在计算时,是使用分区函数对每一个分区进行计算 - RDD之间的依赖关系
RDD是计算模型的封装,当需求中需要将多个计算模型进行组合时,就需要将多个RDD建立依赖关系。 - 分区器(可选)