前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spark学习:Spark源码和调优简介 Spark Core (二)

Spark学习:Spark源码和调优简介 Spark Core (二)

作者头像
week
发布2020-04-10 17:56:00
3660
发布2020-04-10 17:56:00
举报
文章被收录于专栏:用户画像用户画像

本文基于 Spark 2.4.4 版本的源码,试图分析其 Core 模块的部分实现原理,其中如有错误,请指正。为了简化论述,将部分细节放到了源码中作为注释,因此正文中是主要内容。

第一部分内容见:

Spark学习:Spark源码和调优简介 Spark Core (一)

Task 阶段

下面是重头戏submitMissingTasks,这个方法负责生成 TaskSet,并且将它提交给 TaskScheduler 低层调度器。 partitionsToCompute计算有哪些分区是待计算的。根据 Stage 类型的不同,findMissingPartitions的计算方法也不同。

代码语言:javascript
复制
// DAGScheduler.scala

private def submitMissingTasks(stage: Stage, jobId: Int) {

logDebug("submitMissingTasks(" + stage + ")")



// First figure out the indexes of partition ids to compute.

val partitionsToCompute: Seq[Int] = stage.findMissingPartitions()

...



// ResultStage.scala

override def findMissingPartitions(): Seq[Int] = {

val job = activeJob.get

(0 until job.numPartitions).filter(id => !job.finished(id))

}

// ActiveJob.scala

val numPartitions = finalStage match {

// 对于ResultStage,不一定得到当前rdd的所有分区,例如first()和lookup()的Action,

// 因此这里是r.
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Task 阶段
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档