2、Spark-Core概述
2.1 什么是RDD
- RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合.
- Dataset:一个数据集,简单的理解为集合,用于存放数据的
- Distributed:它的数据是分布式存储,并且可以做分布式的计算
- Resilient:弹性的
- 它表示的是数据可以保存在磁盘,也可以保存在内存中
- 数据分布式也是弹性的
2.2 RDD特性
分区:数据可以存储在不同的机器内存上。
- 集合
- 分布式
依赖:每一步计算都依赖于上一步计算的结果
- 只读
- 不可变
- 容错
缓存:数据可以利用灵活的缓存策略进行存储。
- 默认缓存到内存
- 支持灵活的缓存策略
可选项:针对于 kv 键值对的RDD才具有该分区特性(内存,磁盘,内存和磁盘)(spark中的计算数据仍然采用k,v键值对)
2.3 RDD的核心属性:调度和计算都依赖于这五个属性
- 分区列表:多个分区放在一起,便于管理
- 依赖列表:记录着每一个计算中的依赖关系
- Compute函数,用于计算RDD各分区的值
- 分区策略(可选):根据自定义策略可以调整分区大小,分区的个数。
- 优先位置列表(可选,HDFS实现数据本地化,避免数据移动)