Spark 的数据结构,分别是:
- RDD:弹性分布式数据集;
- 累加器:分布式共享只写变量;
- 广播变量:分布式共享只读变量。
它们分别用于不同的场景解决不同的问题。
1.RDD
RDD(Resilient Distributed Dataset) 弹性分布式数据集,是 Spark 最基本的数据处理模型,它是代码中的抽象类。对弹性分布式数据集的解释如下:
弹性:
- 存储的弹性:内存与磁盘自动切换;
- 容错的弹性:数据丢失可以自动恢复;
- 计算的弹性:计算出错重试;
- 分片的弹性:根据需要重新分片。
- 分布式:数据存储在不同节点上。
数据集:封装的是计算逻辑,不保存数据。
RDD 是代码中的抽象类,需要子类实现。RDD 不可变,想要改变只能产生新的 RDD 重新封装计算逻辑。RDD 可分区,里面的元素可以并行计算。
1.1 五大核心属性
- 分区列表:数据集的基本组成单位,标记数据是哪个分区的,执行任务时并行计算;
- 分区计算函数:Spark 在计算时,是使用分区函数对每一个分区进行计算;
- RDD 之间的依赖关系:需要将多个计算模型进行组合时,就需要将多个RDD 建立依赖关系;
- 分区器 Partitioner:当数据为 key-value 类型数据时,可以通过设