spark的高阶用法

news2024/11/8 8:42:10

广播变量broadcast

使用场景:本地集合变量和分布式变量(rdd)进行关联的时候使用
优点:1.可以节省io操作.2.减少executor的内存占用

#定义
map_list = {(1,'dawang',22),(2,'xiaogou',333).....}
broadcast = sc..broadcast(map_list)
#使用
for i in broadcast.value:
	print(i)

累加器accumulator

使用注意事项:当rdd重新生成的时候,accumulator对象会重新累加,所以要在执行action算子之前,对当前rdd进行缓存rdd.cache()

from pyspark import SparkConf, SparkContext, StorageLevel
from operator import add

if __name__ == '__main__':
    # 1.通过sparkcof创建conf对象
    conf = SparkConf().setAppName('test').setMaster('local[*]')
    # 2.生成sc对象
    sc = SparkContext(conf=conf)
    # spark提供的参数,参数是初始值
    aclator = sc.accumulator(0)
    rdd = sc.parallelize([1, 2, 3, 4, 5, 6, 7], 2)
    def add_num(data):
        global aclator
        aclator += 1
    rdd2 = rdd.map(add_num)
    rdd2.cache()
    rdd2.collect()

    rdd3 = rdd.map(lambda x: x)
    rdd3.collect()

DAG-执行流程图

特点:有向无环图
对应关系:1个action=1个job=1个DAG
当代码不在多个分区进行交互的时候,只会产生一个DAG,当执行聚合函数的时候,DAG就会在多个分区内相互交错.产生复杂的DAG

DAG的宽依赖(shuffle)和窄依赖

看rdd在dag中是否有分叉,有分叉就是宽依赖,没有的就是窄依赖,遇到宽依赖就会产生一个stage.stage内部是窄依赖.

spark如何做内存计算,DAG的作用?stage阶段划分的作用?

spark运行会产生DAG,DAG根据宽窄依赖来划分stage,如果都是窄依赖,DAG就会在一个长管道中进行内存计算.一个个管道就是一个个task,一个task对应一个线程,线程之间走的就是内存计算.
DAG的作用就是为了内存计算,stage划分的作用是为了构建内存计算管道.

在这里插入图片描述

spark为什么比mapreduce快?

  • spark算子丰富,mapreduce只有map和reduce两个算子.
  • mapreduce是在磁盘上进行交互,遇到复杂的极端涉及的磁盘交互会更多.运算就会变慢.
  • spark可以走内存迭代计算,算子之间形成DAG,DAG根据宽窄依赖划分出阶段,单一阶段内形成内存管道迭代.

spark并行度

先有并行度,然后由并行度扩展成分区.

集群中如何规划并行度,一般是cpu核心的2~10倍.
在这里插入图片描述

spark的任务调度过程

  • 逻辑DAG的产生
  • 分区DAG的产生
  • task分区任务的产生
  • 将task分散给executor并监控其工作(worker的工作,上面三个是driver的工作)
    在这里插入图片描述

spark层级关系梳理

wordcount程序就相当于一个application.

在这里插入图片描述

DAG的知识总结

DAG有什么用?

DAG是有向无环图,用于描述任务执行流程,主要协助DAG调度器构建task,分配用作任务管理

内存迭代的划分

基于款窄依赖进行阶段划分,阶段内部都是窄依赖可以构建内存迭代的管道.

DAG调度器的作用

构建task分配用做任务管理

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

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

相关文章

【TA100 】 LDR与HDR

一、LDR和HDR的基本概念 1.HDR 、LDR、动态范围 ● Dynamic Range(动态范围)最高亮度/最低亮度 ● HDR High Dynamic Range ● LDR Low Dynamic Range ● ToneMapping:将超高的动态范围(HDR)转换到我们日常显示的屏…

指定英国名校|社会科学老师喜赴曼彻斯特大学访学研究

社会科学较理工科专业申请访问学者的难度更大,何况M老师还有学校、专业、时间等要求。最终我们为其落实了世界50强名校—曼彻斯特大学全球发展研究所的职位,专业方向高度契合。在对方行政办理流程时遇到一些阻力,好在有惊无险地完成了全部流程…

Simulink尝试双脉冲实验验证MOSFET二极管反向恢复的特性(附仿真模型)

目录 前言 双脉冲实验 Simulink仿真对比 总结 前言 最近在做交错串联的图腾柱单相PFC的项目,基于模型的开发,想要在仿真上实现过零点尖峰电流产生并通过软启动进行抑制,把整个过程都通过仿真实现出来,在这个过程中尝试了Simul…

深入 Synchroized 原理,从入门到精通

目录 一、倔强青铜 1.1 多线程一定快吗? 1.2 上下文切换 1.3 测试上下文切换次数 1.4 Java内存模型 1.5 主内存与工作内存之间的数据交互过程 二、秩序白银 2.1 多线程带来的可见性问题 2.2 多线程带来的原子性问题 2.3 多线程带来的有序性问题 三、荣耀…

Yolov5涨点神器:RIFormerBlock助力检测|CVPR2023|RIFormer:无需TokenMixer也能达成SOTA性能的极简ViT架构

1.RIFormer介绍 论文:https://arxiv.org/pdf/2304.05659.pdf 本文基于重参数机制提出了RepIdentityFormer方案以研究无Token Mixer的架构体系。紧接着,作者改进了学习架构以打破无Token Mixer架构的局限性并总结了优化策略。搭配上所提优化策略后,本文构建了一种极致简单且…

目标检测算法:Faster-RCNN论文解读

目标检测算法:Faster-RCNN论文解读 前言 ​ 其实网上已经有很多很好的解读各种论文的文章了,但是我决定自己也写一写,当然,我的主要目的就是帮助自己梳理、深入理解论文,因为写文章,你必须把你所写的东西表…

Python爬虫——爬取阳光高考专业数据并对所有专业进行数据分析

前言 阳光高考是中国高考信息网,覆盖了中国所有院校以及所有专业信息。本文目的是爬取阳光高考的专业信息,包括专业名称,专业代码,专业简介,男女比例,在校生规模,就业方向,平均薪资…

LVS负载均衡 DR模式

目录 -----------------DR模式 LVS负载均衡群集部署----------------------------------- 1.配置负载调度器(192.168.110.100) 2.部署共享存储(NFS服务器:192.168.80.13) 3.配置节点服务器(192.168.80.…

H5吊起微信小程序(适用于从短信、邮件、微信外网页等场景打开小程序任意页面)

​1.实现功能 H5页面中实现打开微信小程序的功能用户在网页中一键唤起小程序 2.前提条件 必须是企业的小程序获取AppID,也就是小程序唯一凭证,可在微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异…

springboot mybatis-plus 代码生成工具

介绍 基于mybatis-plus代码生成工具 后续会不断完善 规划 后续会基于此功能搞低代码平台,会有前端VUE mybatis-plus介绍&特性 • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 • 损耗小&#xff1…

【玩转Linux操作】查找命令时间日期指令

🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔查找⭐find命令🎈按文件名&#x1f388…

Mac 远程连接Windows服务器

要从 Mac 电脑远程连接到 Windows 服务器,您可以使用 macOS 上内置的远程桌面连接 (RDC) 客户端。 方法如下: 确保您要连接的 Windows 服务器已启用远程桌面并且可以从您的网络访问。 您可能需要配置服务器的防火墙设置以允许远程桌面连接。 在您的 Ma…

Knife4j的请求示例当中有很多空白行

问题描述: 按正常来说不应该有上方的空白,当然如果只是查看我也不至于非要解决他,主要是假如接口是json传参,调试界面都没办法修改参数…网上相关的资料又非常少,我别的项目引用的同样的依赖并没有出现如此情况。 引入…

Java中泛型的?和T的区别

文章目录 1、前言2、java中泛型?、T2.1、?、T的概念2.2、?、T的用法2.1.1、T用法2.1.2、?用法 2.3、T、?在继承上的体现2.4、有限制通配符2.4.1、? extends A:2.4.2、? super A: 2.5、无限制通配符和有限制通配符的数…

峰会回顾 | 圆桌对话:低代码行业应用激发产业创新势能

编者荐语: 在万应低代码CMO徐智峰的主持下,中铁城建集团信息化管理部技术经理熊杰、中电信数智科技有限公司湖南分公司总经理助理施晓辉、湖南省建筑设计院集团数字科技中心开发部部长母建玉、长沙市规划信息服务中心技术总监尹彦围绕进行了精彩的圆桌对…

电脑监控系统有什么用处?

相信很多企业用户对电脑监控系统并不陌生,该系统存在于我们的日常工作中。我们都知道它会监管在工作时的行为,所以减少了很多摸鱼时间,只能一心工作。除此之外还有其他的很多功能,主要分为四大部分,下面让我们来一起了…

基于HAL库的STM32单定时器多路输入捕获测量PWM的频率和占空比实现(状态机方式实现)

目录 写在前面 先回顾下定时器的单路捕获PWM 多路捕获PWM的频率和占空比(状态机实现) 我的思路: 状态图 配置 给出示例代码 测试效果 写在前面 先有了这篇文章实现了单定时器的多通道测量频率,以外部时钟的方式可测量任意频率的方波),奈何不能多路…

教你如何多人播报配音把

你们有没有在日常生活中遇到短视频的配音呢?那你们知不知道多人播报配音呢?其实它就是指通过合成多个不同的声音,实现多人对话或演唱的效果,并且可选择不同的声音和语速进行播报。而且它可以应用在广告宣传、盲人听书、电影动画、…

FPGA实战开发-基于DDR的图像缓存(下)

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 例如: 基于米联科的学习资料,分享和学习同步,欢迎大家一起探讨。 整体架构流程 提示:这里可以添加技术整体架构 例如: image_data_gen产生了测试图片&…

1.1 C++友元函数与友元类

C友元 C中的友元(friend)是一种特殊的关系,它允许一个非成员函数或非当前类的成员函数访问一个类的私有成员。 具体来说,友元可以是一个函数、一个类或一个整个命名空间。 友元的声明通常在类定义中,它们可以被用来…