Spark最基本的单位 RDD

最近在负责Spark Streaming 结合 Spark Sql的相关项目,语言是Java,留下一些笔记,也供大家参考,如有错误,请指教!

基本概念:

1.RDD(Resilient Distributed Dataset):弹性分布式数据集。

2.RDD是只读的,由多个partition组成

3.Partition分区,和Block数据块是一一对应的

Spark最基本的单位 RDD_第1张图片

RDD管理:

1.Driver:保存block数据,并且管理RDD和Block的关系

2.Executor 会启动一个BlockManagerSlave,管理Block数据并向BlockManagerMaster注册该Block

3.当RDD不再需要存储的时候,BlockManagerMaster将向BlockManagerSlave发送指令删除相应的Block。

RDD操作:

Transformation:转换算子,这类转换并不触发提交作业,完成作业中间过程处理。

Action:行动算子,这类算子会触发SparkContext提交Job作业。

RDD的依赖关系有两种:窄依赖(narrow dependency)和宽依赖(wide dependency)。

窄依赖:每一个parent RDD的Partition最多被子RDD的一个Partition使用

宽依赖:多个子RDD的Partition会依赖同一个parent RDD的Partition

每一个Transformation,Action都会重新生成新的RDD

执行流程:


Spark最基本的单位 RDD_第2张图片

你可能感兴趣的:(Spark最基本的单位 RDD)