第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

[Spark源碼剖析] JobWaiter

標(biāo)簽:
Spark

职责

  • 等待DAGScheduler job完成,一个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 {...}

在SparkContext.runJob中,通过

val results = new Array[U](partitions.size)
runJob[T, U](rdd, func, partitions, allowLocal, (index, res) => results(index) = res)

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

重要成员及方法

private var finishedTasks = 0

已经完成的task个数


private var jobResult: JobResult = if (jobFinished) JobSucceeded else null

如果job完成,jobResult为job的执行结果。对于0个task的job,直接设置job执行结果为JobSucceeded。


  def cancel() {
    
    dagScheduler.cancelJob(jobId)
  }

发送一个信号来取消job。该取消操作本身会被异步执行。在TaskScheduler取消所有属于该job的tasks后,该job会以一个Spark异常结束。


override def taskSucceeded(index: Int, result: Any): Unit = synchronized { ... }
  • 讲该task结果,即参数result,填充到SparkContext.runJob中建立的val results = new Array[U](partitions.size)

  • finishedTasks += 1,判断finishedTasks是否与totalTasks相等,若相等,则_jobFinished = true jobResult = JobSucceeded

问:什么情况下会 taskSucceeded 方法会被调用?
答:DAGScheduler收到completion @ CompletionEvent事件后,会调用dagScheduler.handleTaskCompletion(completion),该函数会最终调用job.listener.taskSucceeded(rt.outputId, event.result),job.listener为trait JobListener对象,具体实现为JobWaiter


def awaitResult(): JobResult = synchronized { ... }
等待job结束,并返回jobResult



作者:牛肉圆粉不加葱
链接:https://www.jianshu.com/p/e8c4bc5abedc


點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消