下面这个是Spark源码中RDD的第一行描述
A Resilient Distributed Dataset (RDD), the basic abstraction in Spark. Represents an immutable,partitioned collection of elements that can be operated on in parallel1.一个弹性分布式的数据集 2.集合的元素是分区的 3.可以并行计算
1)A list of partitions 一系列分区的集合 方法:protected def getPartitions: Array[Partition]
2)A function for computing each split 针对RDD做操作其实就是针对RDD底层的partition进行操作 方法:def compute(split: Partition, context: TaskContext): Iterator[T]
3)A list of dependencies on other RDDs rdd之间的依赖 protected def getDependencies: Seq[Dependency[_]] = deps
4)a Partitioner for key-value RDDs 对于key-valueRDD可以传递Partitioner进行重新分区 @transient val partitioner: Option[Partitioner] = None
5)a list of preferred locations to compute each split on 最优的位置计算,也就是数据本地化(优先把作业调度到数据所在节点) protected def getPreferredLocations(split: Partition): Seq[String] = Nil
RDD创建有两种方法: 1.parallelize (一般用于测试)
val rdd = sc.parallelize(List(1, 2, 3, 4, 5))2.External File System (用于生产)
sc.textFile("hdfs://hadoop001:9000/hello/wc.txt")RDD的操作包含transformation和action transformation 转换,记录了RDD演变的过程,只有action才会触发transformation进行计算