# 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实现数据本地化，避免数据移动）