zoukankan      html  css  js  c++  java
  • Spark Streaming源码分析 – DStream

    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抽象定义


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


    generateJob
    对于用getOrCompute产生的RDD对象,需要封装成job
    而Job的关键,jobFunc,其实就是想Spark集群提交一个job
    这里只是使用了emptyFunc,具体的output逻辑是需要被具体的outputDStream改写的


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

    具体DStream的定义

    FilteredDStream

     

    WindowedDStream

    image

     

    ShuffledDStream

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

    groupByKeyAndWindow

     

    updateStateByKey

    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

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


  • 相关阅读:
    c语言结构体数组引用
    c语言结构体数组定义的三种方式
    如何为SAP WebIDE开发扩展(Extension),并部署到SAP云平台上
    SAP SRM ABAP Webdynpro和CFCA usb key集成的一个原型开发
    使用SAP API portal进行SAP SuccessFactors的API测试
    SAP UI5应用里的页面路由处理
    在SAP WebIDE Database Explorer里操作hdi实例
    如何使用SAP事务码SAT进行UI应用的性能分析
    使用SAP WebIDE进行SAP Cloud Platform Business Application开发
    SAP CRM WebClient UI ON_NEW_FOCUS的用途
  • 原文地址:https://www.cnblogs.com/fxjwind/p/3585052.html
Copyright © 2011-2022 走看看