最近在负责Spark Streaming 结合 Spark Sql的相关项目,语言是Java,留下一些笔记,也供大家参考,如有错误,请指教!
基本概念:
1.RDD(Resilient Distributed Dataset):弹性分布式数据集。
2.RDD是只读的,由多个partition组成
3.Partition分区,和Block数据块是一一对应的
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