3.2.1 RDD简介

在集群背后,有一个非常重要的分布式数据架构,即弹性分布式数据集(resilient distributed dataset,RDD),它是逻辑集中的实体,在集群中的多台机器上进行了数据分区。通过对多台机器上不同RDD分区的控制,就能够减少机器之间的数据重排(data shuffling)。Spark提供了“partitionBy”运算符,能够通过集群中多台机器之间对原始RDD进行数据再分配来创建一个新的RDD。RDD是Spark的核心数据结构,通过RDD的依赖关系形成Spark的调度顺序。通过对RDD的操作形成整个Spark程序。

(1)RDD的两种创建方式

1)从Hadoop文件系统(或与Hadoop兼容的其他持久化存储系统,如Hive、Cassandra、Hbase)输入(如HDFS)创建。

2)从父RDD转换得到新的RDD。

(2)RDD的两种操作算子

对于RDD可以有两种计算操作算子:Transformation(变换)与Action(行动)。

1)Transformation(变换)。

Transformation操作是延迟计算的,也就是说从一个RDD转换生成另一个RDD的转换操作不是马上执行,需要等到有Actions操作时,才真正触发运算。

2)Action(行动)

Action算子会触发Spark提交作业(Job),并将数据输出到Spark系统。

(3)RDD的重要内部属性

1)分区列表。

2)计算每个分片的函数。

3)对父RDD的依赖列表。

4)对Key-Value对数据类型RDD的分区器,控制分区策略和分区数。

5)每个数据分区的地址列表(如HDFS上的数据块的地址)。