1、什么是RDD
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合.
Dataset:一个数据集,简单的理解为集合,用于存放数据的
Distributed:它的数据分布式存储,并且可以做分布式的计算
Resilient:弹性的
它表示的是数据可以保存在磁盘,也可以保存在内存中
2、RDD的五大特性(源码注释)
- A list of partitions
每个RDD都有一个分区列表 - A function for computing each split
作用在每个分区上面的函数 - A list of dependencies on other RDDs
一个RDD依赖其他多个RDD,这个特性很重要,rdd的容错机制就是根据这个特性而来的 - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
可选项:针对于 kv 键值对的RDD才具有该分区特性 - Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)
可选项 : 数据本地性,数据最优,选择尽量存储在worker节点上的数据节点。