Spark中RDD特性|RDD编程模型|集合创建RDD的两种方式|数据集创建RDD

RDD特性

  1. A list of partitions : 多个分区,分区可以看成是数据集的基本组成单位对于 RDD 来说, 每个分区都会被一个计算任务处理, 并决定了并行计算的粒度。用户可以在创建 RDD 时指定 RDD 的分区数, 如果没有指定, 那么就会采用默认值。 默认值就是程序所分配到的 CPU Core 的数目.每个分配的存储是由BlockManager 实现的, 每个分区都会被逻辑映射成 BlockManager 的一个 Block,,而这个 Block 会被一个 Task 负责计算。
  2. A function for computing each split : 计算每个切片(分区)的函数.Spark 中 RDD 的计算是以分片为单位的,每个 RDD 都会实现compute函数以达到这个目的
  3. A list of dependencies on other RDDs : 与其他 RDD 之间的依赖关系RDD 的每次转换都会生成一个新的 RDD, 所以 RDD 之间会形成类似于流水线一样的前后依赖关系。 在部分分区数据丢失时,Spark 可以通过这个依赖关系重新计算丢失的分区数据, 而不是对 RDD 的所有分区进行重新计算
    4.Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned) : 对存储键值对的 RDD,还有一个可选的分区器只有对于 key-value的 RDD,才会有 Partitioner, 非key-value的 RDD 的 Partitioner 的值是 None;Partitiner 不但决定了 RDD 的本区数量, 也决定了 parent RDD Shuffle 输出时的分区数量
  4. Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file) : 存储每个切片优先(preferred location)位置的列表比如对于一个 HDFS 文件来说, 这个列表保存的就是每个 Partition 所在文件块的位置. 按照“移动数据不如移动计算”的理念, Spark 在进行任务调度的时候, 会尽可能地将计算任务分配到其所要处理数据块的存储位置.

Spark中RDD特性|RDD编程模型|集合创建RDD的两种方式|数据集创建RDD

RDD编程模型

Spark中RDD特性|RDD编程模型|集合创建RDD的两种方式|数据集创建RDD

集合创建RDD

Spark中RDD特性|RDD编程模型|集合创建RDD的两种方式|数据集创建RDD

从外部存储系统的数据集创建

由外部存储系统的数据集创建RDD包括:本地的文件系统,还有所有Hadoop支持的数据集,比如HDFS、HBase等
数据的准备:项目名称上右键=》新建input文件夹=》在input文件夹上右键=》分别新建1.txt和2.txt。每个文件里面准备一些word单词。

Spark中RDD特性|RDD编程模型|集合创建RDD的两种方式|数据集创建RDD