Spark 原理_逻辑图_窄依赖的分类_看源码 | 学习笔记

简介: 快速学习 Spark 原理_逻辑图_窄依赖的分类_看源码

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段 Spark 原理_逻辑图_窄依赖的分类_看源码】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/12018


Spark 原理_逻辑图_窄依赖的分类_看源码


内容简介

一、回顾

二、依赖类的继承关系

三、Narrowdependency 的继承类

 

一、回顾

1.目前,已经学习了很多关于宽窄依赖的内容,及其二者的判断依据,本节我们会学习一些关于窄依赖的扩展,为其划分类别

2.我们已经学习了一些宽窄依赖之间的判断依据,最重要的是是否 shuffle,而判断 shuffle 其中很重要的一个依据为是否多对一,但多对一的分区间也可以是窄依赖,接下来,我们将会学习窄依赖的类型,除此之外的类型就是宽依赖

3.窄依赖的类别

1)依赖类的继承关系

2)一对一窄依赖

3range 窄依赖

4)一对多窄依赖

//都是分区之间的关系

//对于宽窄依赖在什么时候用,有什么作用,会在物理执行图方面进行详细的讲解

 

二、依赖类的继承关系

1.打开源码

1)关闭所有源码类

2)窄依赖在哪个 class 内定义?按两下 shift,在输入框中搜索 dependency,所有宽窄依赖的类都在 dependency scala 文件中被定义,如下:

image.png

(3)打开 dependency scala 文件,可以看到 abstract class 这样一个抽象类,获取 rdd

image.png

2.举例

image.png

RddA rddB 之间存在依赖关系,对象为 dependency

Dependency 对象在 rddB getdependency 中返回

RddA rddB 之间的依赖关系是 dependency 来定义的

通过 dependency 可以得到 rddB 依赖的 rddA,所以 dependency 中有方法可以获取到 RDD 的另一端

窄依赖有两个低层级的继承类

3.  窄依赖的定义

Abstract class narrowdependency 就是窄依赖的意思

image.png

image.png

# Child RDD depends  a smalle namber RDD 依赖一个比较小的数字

解释:窄依赖是一个基类,子 RDD 中的分区,依赖较少的父 RDD 中的分区 ,一般一个子 RDD 依赖两个、三个或一个父 RDD 的分区,称为窄依赖

只应用这个标准也不对,最终还是要看是否 shuffle

4.两个 dependency 第一级别的继承类

1)窄依赖

image.png

2)宽依赖

image.png

补充:准确来说依赖关系有两种:窄依赖和 shuffle 依赖,通常为了方便俗称为窄依赖和宽依赖

 

三、Narrowdependency 的继承类

1.onetoonedependency

image.png

2.rangedependency

image.png

日常出现的问题可以通过观看源码解决,通过源码可以获得很多东西,为什么要去看源码?

正常情况下,我们的流程、正常思路,是希望不通过看源码就能了解它是什么,看源码不论在工作中,还是思考原理性问题时,通常源码的内容才是最准确的,通过网络获得的零散内容,并不是很准确,或是版本不同,观看源码还是有必要的。

以上是整个源码部分的表现

相关文章
|
5月前
|
SQL 分布式计算 大数据
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
43 0
|
5月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
84 0
|
5月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
103 0
|
5月前
|
分布式计算 大数据 Scala
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
【大数据技术Hadoop+Spark】Spark RDD创建、操作及词频统计、倒排索引实战(超详细 附源码)
95 1
|
2月前
|
分布式计算 监控 Java
Spark学习---day06、Spark内核(源码提交流程、任务执行)
Spark学习---day06、Spark内核(源码提交流程、任务执行)
|
2月前
|
存储 缓存 分布式计算
Spark学习--day04、RDD依赖关系、RDD持久化、RDD分区器、RDD文件读取与保存
Spark学习--day04、RDD依赖关系、RDD持久化、RDD分区器、RDD文件读取与保存
|
5月前
|
SQL 分布式计算 大数据
Hudi数据湖技术引领大数据新风口(三)解决spark模块依赖冲突
Hudi数据湖技术引领大数据新风口(三)解决spark模块依赖冲突
102 0
|
5月前
|
存储 Java 关系型数据库
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)
52 1
【Kafka+Flume+Mysql+Spark】实现新闻话题实时统计分析系统(附源码)
|
5月前
|
机器学习/深度学习 分布式计算 搜索推荐
【大数据技术】Spark MLlib机器学习协同过滤电影推荐实战(附源码和数据集)
【大数据技术】Spark MLlib机器学习协同过滤电影推荐实战(附源码和数据集)
81 0
|
5月前
|
机器学习/深度学习 分布式计算 前端开发
【大数据技术】Spark MLlib机器学习线性回归、逻辑回归预测胃癌是否转移实战(附源码和数据集)
【大数据技术】Spark MLlib机器学习线性回归、逻辑回归预测胃癌是否转移实战(附源码和数据集)
35 0