文章目录


DStream

DStream是一个抽象类,主要功能是为每一个批次的数据生成RDD实例,在DStream抽象类中定义了一个HashMap类型变量,存储持续产生的流数据
spark streaming 在持续流入的数据读取时,按时间划分不同批次数据,生成多个RDD,这些RDD保存在 generateRDDs中的HashMap中.键为Time类型

DStreamGraph

不同DStream 之间依赖关系通过DStreamGraph实例化管理

  private[streaming] val graph: DStreamGraph = {
    if (isCheckpointPresent) {
      _cp.graph.setContext(this)
      _cp.graph.restoreCheckpointData()
      _cp.graph    } else {
      require(_batchDur != null, "Batch duration for StreamingContext cannot be null")
      val newGraph = new DStreamGraph()
      newGraph.setBatchDuration(_batchDur)
      newGraph    }
  }

通过源码,可以看出优先从checkPoint恢复数据

  private val inputStreams = new ArrayBuffer[InputDStream[_]]()
  private val outputStreams = new ArrayBuffer[DStream[_]]()

InputDStream 是一个抽象类,记录数据源

abstract class InputDStream[T: ClassTag](_ssc: StreamingContext)

outputStreams 记录DStream输出操作