Spark 源码系列 - DAGScheduler -> runJob

2022/5/30 1:22:40

本文主要是介绍Spark 源码系列 - DAGScheduler -> runJob,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 结论
  • DAGScheduler -> runJob
  • DAGScheduler -> submitJob

结论

DAGScheduler -> runJob

def runJob[T, U](
  val waiter = submitJob(rdd, func, partitions, callSite, resultHandler, properties)

DAGScheduler -> submitJob

  1. 将this, 新生成的jobid, 分区数 生成对象 JobWaiter
  2. 将JobWatier放入阻塞队列EventLoop, EventLoop是通过内部的死循环机制,不停遍历阻塞队列,当有数据就调用onReceive方法。
  def submitJob[T, U](...): JobWaiter[U] = {
    ...
    val jobId = nextJobId.getAndIncrement()
    ...

    val waiter = new JobWaiter[U](this, jobId, partitions.size, resultHandler)
    // eventPorcessLoop 是 阻塞队列 LinkedBlockingDeque
    eventProcessLoop.post(JobSubmitted(
      jobId, rdd, func2, partitions.toArray, callSite, waiter,
      Utils.cloneProperties(properties))) // end post
    waiter
  }


这篇关于Spark 源码系列 - DAGScheduler -> runJob的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程