Spark Streaming揭秘 Day8 RDD生命周期研究
2016-05-15 13:55
483 查看
Spark Streaming揭秘 Day8
RDD生命周期研究
今天让我们进一步深入SparkStreaming中RDD的运行机制。从完整的生命周期角度来说,有三个问题是需要解决的:RDD到底是怎么生成的
具体执行的时候和Spark Core上的执行有所不同
运行之后对RDD如何处理,怎么对已有的RDD进行管理
今天主要聚焦于第一个问题。
从DStream开始
DStream类的注释很明确的说明了,DStream中包含以下内容:DStream依赖的其他DStream(第一个DStream是外部数据源产生)
DStream产生RDD的时间间隔
产生RDD所使用到的方法*
可以看到,这里很明确说明了RDD的生成是在DStream中触发的。
关键方法
通过上一课的分析,我们可以知道JobScheduler是通过generateJob这个方法来与DStream交互的。其中的关键是getOrCompute方法,再进一步分析此方法
其中调用了compute方法,而注释中也说明了,每个DStream都会通过compute方法生成RDD!!!
compute会由各个子类来进行实现,我们找一个常用的MappedDStream看一下。
通过这个代码,我们可以发现两点:
compute方法中实现了map这个方法的业务逻辑
compute方法会调用parent的getOrCompute
这说明了,RDD从后往前依赖,可以进行回溯,这也解释了为什么在JobScheduler中仅仅是对outputStream进行处理的原因。
RDD生成的完整过程
下面引用一张图将上面的说明进行一下串联:在各个DStream中,都实现了getOrCompute方法,在数据未缓存的情况下,会调用compute方法向上追溯到DStream的源头,并将结果逐层向下传递,从而实现了完整的业务处理。
小结
我们会发现,对DStream的所有操作,其实都是作用在RDD上的Transformation操作,只是要加上一个时间维度。统一通过outputStreams的generateJob方法来触发实际的action调用,而处理逻辑和依赖关系,都封装在了DStream内部实现,充分体现了模块的自治性,非常值得借鉴。欲知后事如何,且听下回分解
DT大数据每天晚上20:00YY频道现场授课频道68917580相关文章推荐
- 去除图片中不需要的部分
- XenServer 6.5实战系列:License Management
- SpringMVC日期转换之JsonSerialize
- 语句练习题10
- s5pv210 datasheet_system_BUS
- Introduce
- QQ第三方登录
- Java 应用DOM方式解析XML文件
- .NET Framework (代码库、通用类型系统CTS、CLR) 简介
- Struts2文件上传以及文件名中文乱码解决
- powershell remote on computer
- 记录学习过程
- hibernate创建实体类的类型详解
- 风云杯大学生信安大赛(Web部分题解)
- Android 仿JD浏览商品。滑动头部隐藏显示
- mockito-初始化注解
- Angular 全局页面切换动画 me-pageloading
- php (适用于初学者)
- 确定elk中的数据存储的位置-和增加集群节点
- 详细介绍Java内存泄露原因