1. 由多个分区(Partitions)组成
- 特性:RDD 是分区的集合,每个分区在集群的不同节点上存储。分区是数据并行处理的基本单位。
- 作用:分区使 RDD 能够在集群中并行计算,提高处理效率。
2. 有一个计算每个分区的函数(Compute)
- 特性:RDD 的每个分区都有一个计算函数,用于生成该分区的数据。
- 作用:计算函数定义了如何从父 RDD 或数据源生成当前 RDD 的数据。
3. 对父 RDD 的依赖列表(Dependencies)
- 特性:RDD 保存对其父 RDD 的依赖关系,分为窄依赖(Narrow Dependency)和宽依赖(Shuffle Dependency)。
- 作用:依赖关系支持 RDD 的容错性和血统(Lineage)计算,在数据丢失时可以重新计算。
4. 可选的分区器(Partitioner)
- 特性:对于键值对 RDD(Key-Value RDD),可以指定分区器(如 HashPartitioner 或 RangePartitioner)。
- 作用:分区器决定数据在各节点上的分布方式,优化数据处理和 Shuffle 操作。
5. 可选的首选位置列表(Preferred Locations)
- 特性:RDD 的每个分区可能有一个首选位置列表(如 HDFS 块的位置)。
- 作用:Spark 调度器会优先将计算任务分配到数据所在的节点,实现数据本地化(Data Locality)。