当前位置: 首页 > article >正文

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

共享变量
解决方案一-广播变量
将本地列表标记成广播变量
可以实现降低内存占用和减少网络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.kler.cn/a/488655.html

相关文章:

  • el-select使用enter选中触发了另一个enter方法
  • java通过ocr实现识别pdf中的文字
  • 机器学习基础-机器学习的常用学习方法
  • 细说STM32F407单片机以轮询方式读写外部SRAM的方法
  • HarmonyOS Next系列之华为账号一键登录功能实现(十四)
  • 【年前假期学SHU分享】:计算机生物学、智能计算、通信、大数据、电子信息工程
  • Erlang语言的网络编程
  • 力扣 74. 搜索二维矩阵
  • Flask返回浏览器无乱码方法
  • selenium如何分析网页呢 python爬虫,
  • RK3568-ubuntu旋转显示和触摸
  • 准备机器学习数据的完整指南
  • 开源 vGPU 方案 HAMi 解析
  • Python Excel页眉页脚设置详解
  • FairGuard游戏安全2024年度报告
  • 如何进行单体前后端项目的微服务改造
  • 亚矩阵云手机:跨境出海直播的全方位利器
  • c语言提供后端,提供页面显示跳转服务
  • 【JVM】总结篇之GC日志分析 和 案例
  • 怎么修复损坏或者语法有问题的PDF-免费PDF编辑工具分享
  • 从CentOS到龙蜥:企业级Linux迁移实践记录(系统安装)
  • 9,STL——vector类
  • 机器学习实战——K-均值聚类算法:原理与应用
  • 软考 高级 架构师 第十一章 面向对象分析 设计模式
  • 天童美语:如何培养孩子的音乐细胞
  • 测试开发之面试宝典