Spark07: 宽窄依赖、Stage的划分

news2024/11/20 4:27:02

一、宽依赖和窄依赖

1. 窄依赖

窄依赖(Narrow Dependency):指父RDD的每个分区只被子RDD的一个分区所使用,例如map、filter等这些算子。

一个RDD,对它的父RDD只有简单的一对一的关系,也就是说,RDD的每个partition仅仅依赖于父RDD中的一个partition,父RDD和子RDD的partition之间的对应关系,是一对一的。

2.宽依赖

宽依赖(Shuffle Dependency):父RDD的每个分区都可能被子RDD的多个分区使用,例如groupByKey、reduceByKey,sortBykey等算子,这些算子其实都会产生shuffle操作
也就是说,每一个父RDD的partition中的数据都可能会传输一部分到下一个RDD的每个partition中。此时就会出现,父RDD和子RDD的partition之间,具有错综复杂的关系,那么,这种情况就叫做两个RDD之间是宽依赖,同时,他们之间会发生shuffle操作。

以单词计数案例来分析

  •  最左侧是linesRDD,这个表示我们通过textFile读取文件中的数据之后获取的RDD,接着是我们使用flatMap算子,对每一行数据按照空格切开,然后可以获取到第二个RDD,这个RDD中包含的是切开的每一个单词
  • 在这里这两个RDD就属于一个窄依赖,因为父RDD的每个分区只被子RDD的一个分区所使用,也就是说他们的分区是一对一的,这样就不需要经过shuffle了。
  • 接着是使用map算子,将每一个单词转换成(单词,1)这种形式,此时这两个RDD也是一个窄依赖的关系,父RDD的分区和子RDD的分区也是一对一的
  • 最后我们会调用reduceByKey算子,此时会对相同key的数据进行分组,分到一个分区里面,并且进行聚合操作,此时父RDD的每个分区都可能被子RDD的多个分区使用,那这两个RDD就属于宽依赖了。

二、Stage

spark job是根据action算子触发的,遇到action算子就会起一个job
Spark Job会被划分为多个Stage,每一个Stage是由一组并行的Task组成的

注意:

stage的划分依据就是看是否产生了shuflle(即宽依赖),遇到一个shuffle操作就划分为前后两
个stage。

stage是由一组并行的task组成,stage会将一批task用TaskSet来封装,提交给TaskScheduler进行分配,最后发送到Executor执行

 下面来看一张图来具体分析一下

 

注意:

(1)Stage的划分规则:从后往前,遇到宽依赖就划分Stage

(2)Stage划分是从后往前划分,但是stage执行时从前往后的,这就是为什么后面先切割的
stage为什么编号是3.

 字母是RDD, 看这个图从后往前推,

(1)RDD G 往前推,到RDD B的时候,是窄依赖,所以不切分Stage,再往前到RDD A,此时产生了宽依赖,所以RDD A属于一个Stage、RDD B 和 G属于一个Stage
(2)再看下面,RDD G到RDD F,产生了宽依赖,所以RDD F属于一个Stage,因为RDD F和 RDD C、D、E 这几个RDD没有产生宽依赖,都是窄依赖,所以他们属于一个Stage。
(3)所以这个图中,RDD A 单独一个stage1,RDD C、D、E、F被划分在stage2中,
最后RDD B和RDD G划分在了stage3 里面.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/191404.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python分支循环规范:if elif for while

分支与循环 条件是分支与循环中最为核心的点, 解决的问题场景是不同的问题有不同的处理逻辑。 当满足单个或者多个条件或者不满足条件进入分支和循环, 这里也就说明这个对相同问题处理执行逻辑依据具体参数动态变化, 由此产生多种可能性&…

GAMES101笔记:辐射度量学(下)

Irradiance 定义:irradiance是单位面积上的power,这个单位面积是和入射光线垂直的方向上的单位面积。如果受光表面不垂直于光线,需要投影到垂直方向上进行计算(cosθ\thetaθ)。 Irradiance Falloff 光的Intensity…

零入门容器云网络实战-8->veth pair设备介绍

在介绍veth pair之间,先看一下下面的图, 这类东西有没有见过? 如果没有见过,赶紧看看你方圆10米之内有没有? 这就是网线,最明显的特征是有两端!即,两个水晶头 一端可以链接普通的电脑&#…

【技术调研】关于仪表盘转图片推送钉钉的技术方案调研

方案1—纯后端实现 后端写定时任务,定时启动查询服务。查询出数据集结果,拼接成Table样式,再转换成图片。推送至钉钉。 优点:只需要后端开发,不涉及前端。 缺点:太定制化,不通用,样…

Dart语法学习-数据类型

一、Dart 语言对以下类型具有支持 Numbers (int, double) Strings (String) Booleans (bool) Lists (List, also known as arrays) Sets (Set) Maps (Map) Runes (Runes; often replaced by the characters API) Symbols (Symbol) The value null (Null) Dart 要求以 main 函数…

正大国际期货:什么是黄金保证金交易?黄金保证金交易包含哪些要点?

黄金保证金交易是指在黄金买卖业务中,市场参与者不需对所交易的黄金进行全额资金划拨,只需按照黄金交易总额支付一定比例的价款,作为黄金实物交收时的履约保证。黄金保证金交易根据类型不同,主要分为期货黄金保证金交易和现货黄金…

visual studio 调试增强,实现一行代码打印调用栈

如何主动打印调用栈?如果是Java、Js,那么很简单,三行就能实现。但 VisualStudio 就复杂多了。如果不下断点,那么只能在崩溃的时候被动查看。 而使用 Backward-Cpp ,只需在项目中拖入一个hpp文件,就可以主动…

[Android]ProgressBar进度条

ProgressBar ProgressBar是进度条控件,ProgressBar的应用场景很多,比如用户登录时,后台发送请求,以及进行等待服务器返回信息等一些比较耗时的操作。这个时候如果没有提示,用户可能会以为程序崩溃了或手机死机了&#…

【数据结构】1.2 数据结构的基本概念和术语

文章目录1. 数据、数据元素、数据项和数据对象2. 数据结构逻辑结构的种类存储结构的种类3. 数据类型和抽象数据类型数据类型抽象数据类型概念小结1. 数据、数据元素、数据项和数据对象 数据(Data) 能输入计算机且能被计算机处理的各种符号的集合。 信息…

AcWing1074. 二叉苹果树(树形DP +分组背包)

AcWing1074. 二叉苹果树(树形DP 分组背包)一、问题二、分析1、状态表示2、状态转移3、循环设计三、代码一、问题 二、分析 这道题是一个在数上做分组背包问题的模型,那么为什么是分组背包呢?作者在之前的文章中进行过详细地讲解&…

VUE2常用知识

1、Vue的基本原理 【】当一个Vue实例创建时,Vue会遍历data中的属性,用 Object.defineProperty(vue3.0使用proxy )将它们转为 getter/setter,并且在内部追踪相关依赖,在属性被访问和修改时通知变化。 每个组…

工时管理:按工作时间还是完成的任务来跟踪员工的生产力?

据中国社科院的一项调查显示:我国有86%的职场人都患有拖延症;50%的人不到最后一刻绝不开始工作;13%的人没有人催不能完成工作。 拖延症对小型或成长型企业的影响是很大的,毕竟,任务永远不会因为逃避或简单地坐在那里而…

【Linux】信号保存、信号处理、可重入函数、volatile关键字、SIGCHLD信号

目录 一、信号保存 1.1 信号相关的概念名词 1.2 在内核中的表示 1.3 sigset_t与操作函数 1.4 信号设定 二、信号处理 2.1 内核空间与用户空间 2.2 内核态和用户态 2.3 信号的捕捉流程 2.4 sigaction 函数 三、可重入函数 四、volatile 五、SIGCHLD信号 一、信号保…

当今主流的网络服务应用

文件传输协议 主机之间传输文件是IP网络的一个重要功能,如今人们可以方便地使用网页、邮箱进行文件传输。 然而在互联网早期,Web(World Wide Web,万维网)还未出现,操作系统使用命令行的时代,…

webpack前端应用之基础打包

目录 前言:初识 Webpack 5 一、前端工程化 1、webpack ​ (2)主要功能: 2、webpack的使用:配置文件所需要的信息(五大配置属性) 3、示例 强调: 4、webpack中使用的loader 二…

【Java基础】003 -- Java基础概念(计算机的存储规则)

目录 计算机的存储规则 1、什么是二进制? 2、为什么计算机要使用二进制存储数据? 3、进制之间可以转换吗? 4、码表(Text文本) 5、图片数据 6、声音数据 计算机的存储规则 在计算机中,任意的数据都是…

java集成RSA非对称加密数据传输

使用场景: 前端请求后端接口时如:登录接口,这时候需要传账号密码到后端接口请求这样就会暴露请求的数据。RSA非对称加密分公钥和私钥,公钥将数据进行加密,私钥对加密的数据进行解密 (当然前端最好是封装一下不要暴露出来公钥) 代码实现: 1、RSA工具类(或访问http:…

大数据舆情监控应用平台,TOOM大数据舆情监控系统的作用

大数据舆情监控应用是利用大数据技术对社会舆情的收集、分析、挖掘和展示的工具。它通常会收集和分析各种社交媒体、新闻媒体、博客等信息,以了解舆情动态和趋势。大数据舆情监控应用可以帮助企业和政府了解市场和社会动态,为决策提供支持。然而&#xf…

聚观早报 |比亚迪预计去年营收超4200亿元;美股三大指数集体收跌

今日要闻:比亚迪预计去年营收超 4200 亿元;美股三大指数集体收跌;王凤英正式加入小鹏汽车出任总裁;苹果计划在印度生产 25% 的 iPhone 手机;LVMH老板放狠话坚决打击代购行为比亚迪预计去年营收超 4200 亿元 1 月 30 日…

(Java高级教程)第四章必备前端基础知识-第三节3:JavaScript之DOM和BOM

文章目录一:WebAPI概述二:DOM(1)获取元素(2)事件(3)操作元素A:获取(修改)元素内容B:获取(修改)元素属性C&…