-
Partition List
分片列表, 记录 RDD 的分片, 可以在创建 RDD 的时候指定分区数目, 也可以通过算子来生成新的 RDD 从而改变分区数目 -
Compute Function
为了实现容错, 需要记录 RDD 之间转换所执行的计算函数 -
RDD Dependencies
RDD 之间的依赖关系, 要在 RDD 中记录其上级 RDD 是谁, 从而实现容错和计算 -
Partitioner
为了执行 Shuffled 操作, 必须要有一个函数用来计算数据应该发往哪个分区 -
Preferred Location
优先位置, 为了实现数据本地性操作, 从而移动计算而不是移动存储, 需要记录每个 RDD 分区最好应该放置在什么位置
-
A list of partitions
-
A function for computing each split
-
A list of dependencies on other RDDs
-
Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
-
Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)
简单的说就是: 分区列表, 计算函数, 依赖关系, 分区函数, 最佳位置
-
分区列表, 分区函数, 最佳位置, 这三个属性其实说的就是数据集在哪, 在哪更合适, 如何分区
-
计算函数和依赖关系, 这两个属性其实说的是数据集从哪来
所以结论是 RDD
是一个数据集的表示, 不仅表示了数据集, 还表示了这个数据集从哪来, 如何计算