首页 > 其他 > 详细

Spark Streaming源码分析 – DStream

时间:2014-03-07 08:24:33      阅读:625      评论:0      收藏:0      [点我收藏+]

A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous sequence of RDDs (of the same type) representing a continuous stream of data.
Dstream本质就是离散化的stream,将stream离散化成一组RDD的list,所以基本的操作仍然是以RDD为基础
下面看到DStream的基本定义,对于普通的RDD而言,时间对于DStream是更为重要的因素
将stream切分成RDD的interval时间,stream开始的时间,DStream需要保留的RDD的时间,每个RDD所对于的时间key……

DStream抽象定义

bubuko.com,布布扣


getOrCompute
注意的是,这里是产生RDD对象,而不是真正的进行计算,只有在runjob时才会做真正的计算
Spark RDD本身是不包含具体数据的,只是定义了workflow(依赖关系),处理逻辑

bubuko.com,布布扣


generateJob
对于用getOrCompute产生的RDD对象,需要runjob去产生数据
对于DStream而言,只是对上面的每个离散的RDD,分别的runjob来计算
这里只是给出generateJob的基本框架,这个函数是需要被之类改写的

bubuko.com,布布扣


clearMetadata
清楚过时的RDD对象,其中还会做unpersist,以及调用dependencies的clearMetadata

bubuko.com,布布扣

具体DStream的定义

FilteredDStream

bubuko.com,布布扣

 

WindowedDStream

bubuko.com,布布扣

bubuko.com,布布扣

 

ShuffledDStream

bubuko.com,布布扣

 

PairDStreamFunctions
以groupByKey为例,和普通Spark里面没啥区别,依赖是基于combineByKey实现
比较有特点是提供groupByKeyAndWindow,其实就是先使用WindowedDStream将windows中的RDD union,然后再使用combineByKey

bubuko.com,布布扣

groupByKeyAndWindow

bubuko.com,布布扣
bubuko.com,布布扣

 

updateStateByKey

bubuko.com,布布扣

StateDStream
普通的DStream,都是直接从ParentRDD通过compute来得到当前的RDD
而StateDStream的特别之处,除了ParentRDD,还需要参考PreviousRDD,这个只存在在stream场景下,只有这个场景下,RDD之间才存在时间关系
PreviousRDD = getOrCompute(validTime - slideDuration),即在DStream的generatedRDDs上前一个时间interval上的RDD
处理函数,val finalFunc = (iterator: Iterator[(K, (Seq[V], Seq[S]))]) => { },需要3个参数,key,ParentRDD上的value,PreviousRDD上的value
处理函数需要考虑,当ParentRDD或PreviousRDD为空的情况

注意StateDStream,默认需要做persist和checkpoint

bubuko.com,布布扣

 

TransformedDStream
首先这是个比较通用的operation,可以通过自定义的transformFunc,将一组parentRDDs计算出当前的RDD
需要注意的是,这些parentRDDs必须在同一个streamContext下,并且有相同的slideDuration
在DStream接口中,可以提供transform和transformWith两种,参考下面源码

bubuko.com,布布扣
bubuko.com,布布扣

Spark Streaming源码分析 – DStream,布布扣,bubuko.com

Spark Streaming源码分析 – DStream

原文:http://www.cnblogs.com/fxjwind/p/3585052.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!