PySpark学习笔记4-共享变量,内核调度

devtools/2025/1/12 16:42:28/

共享变量
解决方案一-广播变量
将本地列表标记成广播变量
可以实现降低内存占用和减少网络IO传输,提高性能

boradcast = sc.boardcast(stu_info_list)
value = broadcast.value

解决方案二-累加器

acmlt = sc.accumulator(0)

可以收集执行器的执行结果并作用在自己的身上
Spark内核调度
DAG:有向五环图
一个action会产生一个DAG
一个DAG运行会产生一个job
一个代码运行起来包含叫做Application,包含多job
DAG和分区关联后,可以得到有分区关系的DAG图
DAG的宽窄依赖和阶段划分
窄依赖:父RDD的一个分区,将全部数据发给子RDD的一个分区
宽依赖: 父RDD的一个分区会将数据发给子RDD的多个分区
宽依赖还有一个别名shuffle

对于Spark过程,会按照宽依赖划分不同的DAG阶段,从后向前,遇到一个宽依赖就换分出一个阶段,成为stage,二每个stage的内部一定都是窄依赖
面试题1
spark怎么做内存计算的?DAG的作用?stage阶段划分的作用?
spark会使用DAG图进行内存计算,DAG图会根据分区和宽窄依赖划分阶段,每一个阶段饿的内部都是窄依赖,这些内存迭代计算的管道形成一个个具体的执行任务,一个任务对应一个线程,任务在线程中运行,就是在进行内存计算。
面试题2
spark为什么mapreduce计算效率快?
spark的算子丰富,mapreduce算子匮乏,很多复杂的人物需要多个mapreduc进行串联,通过磁盘交互数据
spark可以执行内存迭代,听过形成DAG并基于依赖划分阶段后,在阶段内可以形成内存迭代管道,但是map使用硬盘进行交互的,spark可以使用更多的内存计算而不是磁盘迭代
在这里插入图片描述
spark程序的调度流程如图所示
1.driver被构建出来
2.构建spark Context:执行环境入口对象
3.基于DAG调度器构建逻辑任务分配
4.基于任务调度器将逻辑任务分配到各个执行器上干活,并监控他们
5.执行器被任务调度器监控,听从他们的指令工作,并定期汇报工作进度
driver的两个重要组件:DAG调度器和task调度器


http://www.ppmy.cn/devtools/149919.html

相关文章

IoTDB 常见问题 QA 第三期

关于 IoTDB 的 Q & A IoTDB Q&A 第三期持续更新!我们将定期汇总我们将定期汇总社区讨论频繁的问题,并展开进行详细回答,通过积累常见问题“小百科”,方便大家使用 IoTDB。 Q1:查询最新值 & null 数据相加方…

wireshark排除私接小路由

1.wireshark打开,发现了可疑地址,合法的地址段DHCP是192.168.100.0段的,打开后查看发现可疑地址段,分别是,192.168.0.1 192.168.1.174 192.168.1.1。查找到它对应的MAC地址。 ip.src192.168.1.1 2.通过show fdb p…

牛客网刷题 ——C语言初阶(6指针)——BC106 上三角矩阵判定

1. 题目描述——BC106 上三角矩阵判定 牛客网OJ题链接 描述 KiKi想知道一个n阶方矩是否为上三角矩阵,请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。 示例 输入: 3 1 2 3 0 4 5 0 0…

图像处理|腐蚀操作

在计算机视觉与图像处理中,腐蚀操作(Erosion)是形态学操作的一种。形态学操作广泛应用于二值图像中,主要用于分析和提取图像中的结构信息。腐蚀操作是这类操作中最常见的一种,用来对图像进行“收缩”处理,消…

【代码随想录-数组篇02】:双指针(快慢指针)法相关力扣练习题

提示1:本篇共包含5道题,全部用python语言进行实践,看会不如行动会,请大家多多实践~ 提示2:强烈推荐 代码随想录 提示3:博主最近在跟着【代码随想录】进行刷题,有小伙伴有想法的可以私…

前端数据模拟器 mockjs 和 fakerjs

功能:帮助前端生成随机数据,独立于后端单独开发 一、mockjs 安装:npm install mockjs 优点:官网是中文。 缺点:目前该库已经无人维护,也没人解决github上的bug。 官网 github地址 二、fakerjs 安装&#xf…

腾讯云下架印度云服务器节点,印度云服务器租用何去何从

近日,腾讯云下架印度云服务器节点的消息引起了业界的广泛关注。这一变动让许多依赖印度云服务器的用户开始担忧,印度云服务器租用的未来究竟在何方? 从印度市场本身来看,其云服务市场的潜力不容小觑。据 IDC 报告,到 2…

野指针bug

RunUnit *UnitList[10000]; void aaaa() {//用cu接收RunUnit *cu UnitList[Index];/*利用UnitList[Index]中的数据,借助用cu做一系列的动作*///UnitList[Index]中的数据之后在哪都不再使用,这里把它销毁delete cu;cu nullptr; }void bbbb() {if(UnitLi…