Spark作业提交和DAG调度器生成Task

  1. RDD action => SparkContext.runJob(rdd: RDD[T], func: Iterator[T] => U)
  2. runJob() => dagScheduler.runJob: 对所有Partitions应用一个函数做变换,返回结果,是所有RDD action的主进入点。
  3. DAGScheduler.runJob => submitJob()并返回一个future => eventProcessLoop.post(JobSubmitted) 发布事件并等待完成
  4. eventProcessLoop.onReceive(event) => doOnReceive(event) => handleJobSubmitted() => createResultStage(finalRDD, func, partitions, jobId, callSite) => 创建ActiveJob => submitStage(finalStage)
  5. submitStage(stage) => 递归提交missing parent stages, 根据RDD的依赖关系构建DAG => submitMissingTasks(stage, jobId.get)
    => taskScheduler.submitTasks(new TaskSet(tasks.toArray, stage.id, stage.latestInfo.attemptId, jobId, properties))
  6. submitWaitingChildStages(stage)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值