您的位置:首页 > 其它

Spark的核心概念——RDD

2016-12-19 16:53 267 查看
Spark的核心概念——RDD

RDD(resilient distributed dataset )Spark基本计算单元,是Spark数据集 最核心的东西。表示已被分区、被序列化、不可变的、有容错机制的、能被并行操作的数据集合

弹性分布式
Resilient 当一个RDD分区(partition)丢失之后,Spark会自动通过lineage,从其原始的RDD重新计算。
Distributed 通过分区(partitioned)分布在集群多台机器上并行计算

一、RDD的创建方式: 

1、集合转换 

2、从文件系统(本地文件、HDFS、HBase)输入 

3、从父RDD转换(为什么需要父RDD呢?容错,下面会提及) 

二、RDD的计算类型: 

1、Transformation:延迟执行,一个RDD通过该操作产生的新的RDD时不会立即执行,只有等到Action操作才会真正执行。 

2、Action:提交Spark作业,当Action时,Transformation类型的操作才会真正执行计算操作,然后产生最终结果输出。

三、RDD的特点:

1、它是在集群节点上的不可变的、已分区的集合对象。

2、失败自动创建。

3、一个变换将一个RDD变换成另外一个RDD,这些RDD之间通过Lineage产生依赖关系。

4、分区只是一个逻辑概念,变换前和变换后的分区可能是同一块内存存储。

5、可以控制存储级别(内存、硬盘等)来进行重用。

6、在物理上,RDD对象实质上是一个元数据结构,存储着Block, Node等的映射关系,以及其他的元数据信息。

7、一个RDD就是一组分区,每个分区就是一个block。 block可以存储在内存中,如果内存不够时可以存储在磁盘上。

8、支持使RDD的元素根据那个key来分区(partitioning)。spark支持重分区,数据通过spark默认或者用户自定义的分区器进行分区,决定数据块分布在哪些节点上。

(如果是从HDFS等外部存储结构中读取数据,数据则按照HDFS中的数据分布策略进行数据分区,HDFS中的一个block对应spark的一个分区 )

9、可序列化,静态类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息