美文网首页
Spark-JobWaiter

Spark-JobWaiter

作者: 丹之 | 来源:发表于2019-01-01 16:56 被阅读14次

    介绍

    等待DAGScheduler作业完成的对象。任务完成后,它会通过他们的任务结果给定的处理函数。
    一个JobWaiter对象与一个job唯一一一对应,一旦task完成,将该task结果填充到SparkContext.runJob创建的results数组中

    构造函数

    private[spark] class JobWaiter[T](
        dagScheduler: DAGScheduler,
        val jobId: Int,
        totalTasks: Int,
        resultHandler: (Int, T) => Unit)
      extends JobListener with Logging {
    

    在SparkContext.runJob中,通过

     def runJob[T, U: ClassTag](
          rdd: RDD[T],
          func: (TaskContext, Iterator[T]) => U,
          partitions: Seq[Int]): Array[U] = {
        val results = new Array[U](partitions.size)
        runJob[T, U](rdd, func, partitions, (index, res) => results(index) = res)
        results
      }
    

    来创建容纳job结果的数据,数组的每个元素对应与之下标相等的partition的计算结果;并将结果处理函数(index, res) => results(index) = res作为参数传入runJob,以使在runJob内部的创建的JobWaiter对象能够在得知taskSucceeded之后,将该task的结果填充到results中。

    重要方法

    https://github.com/keepsimplefocus/spark-sourcecodes-analysis/blob/master/spark-core/%5BSpark%E6%BA%90%E7%A0%81%E5%89%96%E6%9E%90%5D-JobWaiter.md

    相关文章

      网友评论

          本文标题:Spark-JobWaiter

          本文链接:https://www.haomeiwen.com/subject/kwgnlqtx.html