Spark版本定制第8天:RDD生成生命周期彻底

本期内容:

1 RDD生成生命周期

2 深度思考

  一切不能进行实时流处理的数据都是无效的数据。在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下。

  Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序。如果可以掌握Spark streaming这个复杂的应用程序,那么其他的再复杂的应用程序都不在话下了。这里选择Spark Streaming作为版本定制的切入点也是大势所趋。

  在sparkStreaming中DStream是RDD的模板,每隔一个batchInterval会根据DStream模板生成一个对应的RDD。生成的RDD会存放到generatedRDD中。生成了一系列的RDD后,会通过foreachRDD对RDD进行操作。

  

private def foreachRDD(
    foreachFunc: (RDD[T], Time) => Unit,
    displayInnerRDDOps: Boolean): Unit = {
  new ForEachDStream(this,
    context.sparkContext.clean(foreachFunc, false), displayInnerRDDOps).register()
}

  在foreachRDD中new出了一个ForEachDStream对象。并将这个注册给DStreamGraph 。

  当每一个batchInterval的时间内,会调用DStreamGraph中的generateJobs方法

  

def generateJobs(time: Time): Seq[Job] = {
  logDebug("Generating jobs for time " + time)
  val jobs = this.synchronized {
    outputStreams.flatMap { outputStream =>
      val jobOption = outputStream.generateJob(time)
      jobOption.foreach(_.setCallSite(outputStream.creationSite))
      jobOption
    }
  }
  logDebug("Generated " + jobs.length + " jobs for time " + time)
  jobs
}

  在这里面会根据时间调用generateJob方法

override def generateJob(time: Time): Option[Job] = {
  parent.getOrCompute(time) match {
    case Some(rdd) =>
      val jobFunc = () => createRDDWithLocalProperties(time, displayInnerRDDOps) {
        foreachFunc(rdd, time)
      }
      Some(new Job(time, jobFunc))
    case None => None
  }
}

  然后沿着graph回溯,再下一个batchInterval后生成新的RDD,不断循环,将所有生成的rdd都放入集合generatrdRDD中。

备注:

资料来源于:DT_大数据梦工厂(Spark发行版本定制)

更多私密内容,请关注微信公众号:DT_Spark

如果您对大数据Spark感兴趣,可以免费听由王家林老师每天晚上20:00开设的Spark永久免费公开课,地址YY房间号:68917580

时间: 2024-11-05 22:43:46

Spark版本定制第8天:RDD生成生命周期彻底的相关文章

Spark版本定制八:Spark Streaming源码解读之RDD生成全生命周期彻底研究和思考

本期内容: 1.DStream与RDD关系彻底研究 2.Streaming中RDD的生成彻底研究 一.DStream与RDD关系彻底研究 课前思考: RDD是怎么生成的? RDD依靠什么生成?根据DStream来的 RDD生成的依据是什么? Spark Streaming中RDD的执行是否和Spark Core中的RDD执行有所不同? 运行之后我们对RDD怎么处理? ForEachDStream不一定会触发Job的执行,但是它一定会触发job的产生,和Job是否执行没有关系: 对于DStream

Spark版本定制第6天:Job动态生成和深度思考

本期内容: 1 Job动态生成 2 深度思考 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序.如果可以掌握Spark streaming这个复杂的应用程序,那么其他的再复杂的

Spark版本定制第3天:通过案例对SparkStreaming透彻理解之三

本期内容: 1 解密Spark Streaming Job架构和运行机制 2 解密Spark Streaming 容错架构和运行机制 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应

Spark版本定制第2天:通过案例对SparkStreaming透彻理解之二

本期内容: 1 解密Spark Streaming运行机制 2 解密Spark Streaming架构 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序.如果可以掌握Spark

Spark版本定制第1天:通过案例对SparkStreaming透彻理解之一

本期内容: 1 Spark Streaming另类在线实验 2 瞬间理解Spark Streaming本质 在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下.这里选择Spark Streaming作为版本定制的切入点也是大势所趋. 小技巧:将Batch interval放大,相当于看到了Streaming的慢放版本,可以更清楚它的各个环节,这里以黑名单过滤程序

Spark版本定制第5天:案列解析Spark Streaming运行源码

本期内容: 1 在线动态计算分类最热门商品案例回顾与演示 2 基于案例贯通Spark Streaming的运行源码 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序.如果可以掌

Spark版本定制第13天:Driver容错

本期内容 1.ReceivedBlockTracker容错安全性 2.DStreamGraph和JobGenerator容错安全性 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用

Spark版本定制:通过案例对SparkStreaming透彻理解三板斧之一

本期内容: 1 Spark Streaming另类在线实验 2 瞬间理解Spark Streaming本质 问:为什么从Spark Streaming来切入spark源码版本订制? Spark最开始的时候并没有Spark Streaming.Spark Sql.Spark ML.Spark R.Spark Graphx等相关的内容,就是很原始的Spark Core,Spark Streaming本身是Spark Core上的一个框架,透过一个框架的彻底研究可以彻底精通spark的方方面面: Sp

Spark版本定制第7天:JobScheduler内幕实现和深度思考

本期内容: 1 JobScheduler内幕实现 2 深度思考 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应用程序.如果可以掌握Spark streaming这个复杂的应用程序,