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

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

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

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

相关文章
|
9月前
|
移动开发 分布式计算 Spark
Spark的几种去重的原理分析
Spark的几种去重的原理分析
176 0
|
9月前
|
机器学习/深度学习 SQL 分布式计算
Spark核心原理与应用场景解析:面试经验与必备知识点解析
本文深入探讨Spark核心原理(RDD、DAG、内存计算、容错机制)和生态系统(Spark SQL、MLlib、Streaming),并分析其在大规模数据处理、机器学习及实时流处理中的应用。通过代码示例展示DataFrame操作,帮助读者准备面试,同时强调结合个人经验、行业趋势和技术发展以展现全面的技术实力。
845 0
|
15天前
|
分布式计算 Spark
【赵渝强老师】Spark RDD的依赖关系和任务阶段
Spark RDD之间的依赖关系分为窄依赖和宽依赖。窄依赖指父RDD的每个分区最多被一个子RDD分区使用,如map、filter操作;宽依赖则指父RDD的每个分区被多个子RDD分区使用,如分组和某些join操作。窄依赖任务可在同一阶段完成,而宽依赖因Shuffle的存在需划分不同阶段执行。借助Spark Web Console可查看任务的DAG图及阶段划分。
56 15
|
4月前
|
存储 缓存 分布式计算
大数据-89 Spark 集群 RDD 编程-高阶 编写代码、RDD依赖关系、RDD持久化/缓存
大数据-89 Spark 集群 RDD 编程-高阶 编写代码、RDD依赖关系、RDD持久化/缓存
67 4
|
4月前
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
60 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
4月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
131 0
|
4月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
125 0
|
8月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
57 0
|
9月前
|
SQL 存储 分布式计算
spark执行sql的原理是什么
spark执行sql的原理是什么
169 1
|
9月前
|
分布式计算 Java Hadoop
Spark3.3.0源码编译补充篇-抓狂的证书问题
Spark3.3.0源码编译补充篇-抓狂的证书问题
59 0