SparkPi 代码剖析1 | 学习笔记

简介: 快速学习 SparkPi 代码剖析1

开发者学堂课程【大数据实时计算框架  Spark  快速入门SparkPi  代码剖析1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/100/detail/1676


SparkPi  代码剖析1


内容介绍:

一、SparkPi   代码剖析

二、递归的方法来倒着往前切割   stage


一、SparkPi  代码剖析

RDD.scala

910

def foreach()

sc.runJob

SparkContext.scala

1928

def runRob ()

1818

1832

dagScheduler.runJob

Dagscheduler.scala

603

611

valwaiter = submitJob()

583

eventProcessLoop.post(Jobsubmitted(

184

private[scheduler] val eventprocessLoop- new DAGSchedulerEventProcessloop(this)

1605

private def doonReceive (event: DAGSchedulerEvent): Unit = event match {

1607

dagscheduler.handleJobSubmitted(

837

首先创建了一个finalstage

最后一个stage是Resultstage

861

submitstage(finalstage)

912



二、递归的方法来倒着往前切割  stage

917

val missing = getMissingParentstages (stage).sortBy(_.id)

433

private def getMissingParentstages

这个方法里面通过  visit  方法和  stack  数据结构

往前去找  fina1RDD  的依赖

477

如果是宽依赖

就生成一个  ShuffleMapstage

如果是窄依赖,是不是就是继续压栈

这个地方最后会返回一个  List  ,从  set  转成  List  可以排序

921

submitMissingTasks(stage,jobId.get)

来判断父  stage  里面是否为空,如果为空了就开始从前往后的提交  task

935

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

941

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

这里里面放的就是一个  stage  里面的  partition ids

966

val taskIdToLocations: Map[Int, Seq[TaskLocation]] = try

{这里里面干的事情就是要把  partitionid  对应的  preferLocations  计算出来有的RDD  有  preferLocations  警如  HadoopRDD

969

partitionsTocompute.map {id => (id, getPreferredLocs(

1529

private def getPreferredLocsInternal(

这里方法里面就是去计算最近位置

1540

val cached = getcachelocs(rdd)(partition)

首先会看  RDD  里面的 partition  有没有  cache  过,有的话  cache  的地址就是最近开始如果没有缓存

1545

val rddPrefs- rdd, preferredlocations (rdd. partitions (partition). tolist

就是根据  partition  所在的  RDD  来获取最佳位置

相关文章
|
5月前
|
前端开发
【面试题】如何使用ES6 ... 让代码优雅一点?
【面试题】如何使用ES6 ... 让代码优雅一点?
|
5天前
|
数据采集 开发框架 前端开发
代码实战
本文详细介绍了使用BeautifulSoup4解析HTML文档的方法,包括标签选择器、属性选择器等基本操作。通过实际案例演示了如何结合Requests库从网页中提取标题、链接和发布时间等信息。文章还讨论了爬虫的道德准则、安全性及优化建议,如使用Session保持会话、多线程请求等。最后,针对反爬虫策略提出了一系列应对措施,帮助读者提高爬虫效率和稳定性。本文适合希望深入了解BeautifulSoup4及其在爬虫项目中应用的开发者阅读。
13 3
|
5月前
|
JavaScript Java 测试技术
基于Java的汇编课程网站的设计与实现(源码+lw+部署文档+讲解等)
基于Java的汇编课程网站的设计与实现(源码+lw+部署文档+讲解等)
28 0
|
5月前
|
SQL 分布式计算 Java
Spark学习---SparkSQL(概述、编程、数据的加载和保存、自定义UDFA、项目实战)
Spark学习---SparkSQL(概述、编程、数据的加载和保存、自定义UDFA、项目实战)
291 1
|
前端开发
前端学习案例-ref的进阶用法1
前端学习案例-ref的进阶用法1
81 0
前端学习案例-ref的进阶用法1
|
前端开发
前端知识学习案例9vs code-复制操作
前端知识学习案例9vs code-复制操作
58 0
前端知识学习案例9vs code-复制操作
|
前端开发
前端知识学习案例21vs code-跳转或者查看函数定义
前端知识学习案例21vs code-跳转或者查看函数定义
79 0
前端知识学习案例21vs code-跳转或者查看函数定义
|
分布式计算 Hadoop 大数据
Spark 原理_总结介绍_案例编写 | 学习笔记
快速学习 Spark 原理_总结介绍_案例编写
108 0
Spark 原理_总结介绍_案例编写 | 学习笔记
|
缓存 文字识别 运维
开发一个小程序 Demo| 学习笔记
快速学习开发一个小程序 Demo。
170 0
开发一个小程序 Demo| 学习笔记
|
缓存 小程序 IDE
开发一个小程序 Demo|学习笔记
快速学习 开发一个小程序 Demo
192 0
开发一个小程序 Demo|学习笔记