【Pyspark-驯化】一文搞定spark的代码执行原理和使用技巧

news2024/9/26 3:26:43

【Pyspark-驯化】一文搞定spark的代码执行原理和使用技巧
 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 相关内容文档获取 微信公众号
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🌵文章目录🌵

    • 🎯 1.基本介绍
    • 💡 2. spark架构图
    • 💡 3.spark进行DAG/TASK任务调度流程
    • 💡 4. DAGScheduler的具体流程

下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 1.基本介绍

  spark作为在hadoop的基础上进行性能的优化,其生态图也基本和hadoop相似,而不同之处在于spark的计算准则是基于RDD进行设计DAG的,而hadoop则是通过MR来进行的,下面为spark的生态图:
在这里插入图片描述

  • Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的。
  • Spark SQL:提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。Spark提供的sql形式的对接Hive、JDBC、HBase等各种数据渠道的API,用Java开发人员的思想来讲就是面向接口、解耦合,ORMapping、Spring Cloud Stream等都是类似的思想。
  • Spark Streaming:基于SparkCore实现的可扩展、高吞吐、高可靠性的实时数据流处理。支持从Kafka、Flume等数据源处理后存储到HDFS、DataBase、Dashboard中。对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据。
  • MLlib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。
  • GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作

💡 2. spark架构图

  由于hadoop在运行的过程中是基于磁盘进行操作的,无论是MapReduce还是YARN都是将数据从磁盘中加载出来,经过DAG,然后重新写回到磁盘中,计算过程的中间数据又需要写入到HDFS的临时文件,这些都使得Hadoop在大数据运算上表现太“慢”,而Spark则基于内存进行DAG操作,具体执行框架图如下所示:
在这里插入图片描述

  • 上图中,sparkcontext程序向集群控制中心cluster申请计算和资源,而cluster将设计好的dag配送给各个worker几点进行分配计算,具体的运行流程如下:
    在这里插入图片描述

  • 构建Spark Application的运行环境,启动SparkContext

  • SparkContext向资源管理器(可以是Standalone,Mesos,Yarn)申请运行Executor资源,并启动StandaloneExecutorbackend,

  • Executor向SparkContext申请Task

  • SparkContext将应用程序分发给Executor

  • SparkContext构建成DAG图,将DAG图分解成Stage、将Taskset发送给Task Scheduler,最后由Task Scheduler将Task发送给Executor运行

  • Task在Executor上运行,运行完释放所有资源

💡 3.spark进行DAG/TASK任务调度流程

  spark进行任务调度的流程如下所示:
在这里插入图片描述

  • 用户编排的代码由一个个的RDD Objects组成,DAGScheduler负责根据RDD的宽依赖拆分DAG为一个个的Stage,而每个Stage包含一组逻辑完全相同的可以并发执行的Task。TaskScheduler负责将Task推送给从ClusterManager那里获取到的Worker启动的Executor。

💡 4. DAGScheduler的具体流程

   DAG负责的是将RDD中的数据依赖划分为不同可以并行的宽依赖task, 这些不同的task集合统称为stage,最后将这些stage推送给TaskScheduler进行调度,DAG的具体划分过程如下所示:
在这里插入图片描述

  • 窄依赖经历的是map、filter等操作没有进行相关的shuffle,而宽依赖则通常都是join等操作需要进行一定的shuffle意味着需要打散均匀等操作
  • 1 stage是触发action的时候 从后往前划分 的,所以本图要从RDD_G开始划分。
  • 2 RDD_G依赖于RDD_B和RDD_F,随机决定先判断哪一个依赖,但是对于结果无影响。
  • 3 RDD_B与RDD_G属于窄依赖,所以他们属于同一个stage,RDD_B与老爹RDD_A之间是宽依赖的关系,所以他们不能划分在一起,所以RDD_A自己是一个stage1
  • 4 RDD_F与RDD_G是属于宽依赖,他们不能划分在一起,所以最后一个stage的范围也就限定了,RDD_B和RDD_G组成了Stage3
  • 5 RDD_F与两个爹RDD_D、RDD_E之间是窄依赖关系,RDD_D与爹RDD_C之间也是窄依赖关系,所以他们都属于同一个stage2
  • 6 执行过程中stage1和stage2相互之间没有前后关系所以可以并行执行,相应的每个stage内部各个partition对应的task也并行执行
  • 7 stage3依赖stage1和stage2执行结果的partition,只有等前两个stage执行结束后才可以启动stage3.
  • 8 我们前面有介绍过Spark的Task有两种:ShuffleMapTask和ResultTask,其中后者在DAG最后一个阶段推送给Executor,其余所有阶段推送的都是ShuffleMapTask。在这个案例中stage1和stage2中产生的都是ShuffleMapTask,在stage3中产生的ResultTask。
  • 9 虽然stage的划分是从后往前计算划分的,但是依赖逻辑判断等结束后真正创建stage是从前往后的。也就是说如果从stage的ID作为标识的话,先需要执行的stage的ID要小于后需要执行的ID。就本案例来说,stage1和stage2的ID要小于stage3,至于stage1和stage2的ID谁大谁小是随机的,是由前面第2步决定的。

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

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

相关文章

国标GB28181协议设备通道告警没有快照图片怎么办?实时流抓图/录像抓图

熟悉国标GB28181协议的同学都知道,国标协议在告警推送这一块定义了各种告警类型和告警参数,但就是没有定义告警的图片应该怎么上传到平台,所以,现在市面上的所有设备,几乎都不支持上传告警图片,这给我们的项…

CCRC-DSA数据安全评估师:加快构建大网络安全工作格局

7月31日,第十二届ISC.AI互联网安全大会开幕式在北京国家会议中心隆重举行,本次大会以“构建大型安全防护模型,引领安全产业创新”为主题。 中央网络安全和信息化委员会办公室副主任、国家互联网信息办公室副主任王京涛出席并发表了重要讲话。…

【简历】黑龙江某一本大学:Java简历指导,中厂面试通过率低

简历说明 这是黑龙江某一本大学25届的校招简历,计算机专业,那么我们说像这种比较好的一本大学叫老一本,大家应该定下,一本的就业主体在中厂,所以校招你要先定你的就业范围,因为考察的项目要求,…

企微中台助力私域用户营销

背景 为了提升公司内外部的沟通、协作效率,我们在内部广泛使用了企业微信服务。同时,随着互联网获客成为主要手段,企业面临着激烈的竞争,导致获客变得更加困难,这需要我们花费更多的时间和资源。因此,精细化…

【中项】系统集成项目管理工程师-第10章 项目整合管理-10.1制定项目章程

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…

包的基本使用

目录 一、看一个应用场景 二、基本介绍 三、快速入门 四、注意事项和使用细节 1、导入包的基本语法 2、导入包的模块的指定函数、类、变量 3、__init__.py 通过__all__控制允许导入的模块 4、包可以有多个层级 5、快捷键 altenter/shiftaltenter 可以快捷的导入 6、…

【计算机方向】五本计算机SCI,国人占比高,沾边就收!堪称“水刊之王”!

本期将为您带来五本计算机SCI 妥妥毕业神刊! KNOWLEDGE ENGINEERING REVIEW Evolving Systems ASIAN JOURNAL OF CONTROL EUROPEAN JOURNAL OF CONTROL INTERNATIONAL JOURNAL OF CONTROL AUTOMATION AND SYSTEMS 期刊名称&#xf…

电话外呼系统功能详解

外呼系统的功能特点 1、数据管理:外呼系统全面管理电销数据,数据报表应有尽有。 2、高频拨号:外呼系统具有多种拨号方式,专属的电销线路,不限制高频拨号。 3、一键拨号:外呼系统的一键拨号功能可以减少手动输入号码的繁琐过程。 4、筛选号…

深度学习中常见的四种数据标准化方法详细解读(StandardScaler、MinMaxScaler、RobustScaler、MaxAbsScaler)

目录 1. 前提摘要 2. 标准化方法 2.1 StandardScaler 2.1.1 计算方法 2.1.2 计算公式 2.1.3 适用场景 2.2 MinMaxScaler 2.2.1 计算方法 2.2.2 计算公式 2.2.3 适用场景 2.3 RobustScaler 2.3.1 计算方法 2.3.2 计算公式 2.3.3 适用场景 2.4 MaxAbsScaler 2.…

一篇文章让你用我的世界中的红石搞懂什么是ALU!

目录 1.一些在开始的约定 2.七大逻辑门电路 1、 与门 2、 或门 3、 非门 5、 或非门 6、 异或门 7、 同或门 3.半加器 4.全加器 5.ALU 1.一些在开始的约定 相同的概念:相同的概念:高电平低电平逻辑真逻辑假 开关的开 开关的关 灯的亮 灯…

聚鼎科技:装饰画怎么做盈利更快

在当今社会,艺术与商业的界限日渐模糊,装饰画作为一种独特的艺术形式,不仅美化了空间,同时也成为了一种盈利的途径。要在竞争激烈的市场中脱颖而出,实现盈利最大化,创作者及销售者必须采取一些明智的策略。…

19 注意力机制

目录 1.注意力机制从心理学的角度出发注意力机制非参注意力池化层Nadaraya-Watson 核回归:总结注意力汇聚:Nadaraya-Watson 核 代码实现非参数注意力汇聚(非参数注意力池化)注意力权重参数注意力汇聚(参数注意力池化)2.注意力分数如何将 key 和 value 拓展到更高的维度掩…

C#图片批量下载Demo

目录 效果 项目 代码 下载 效果 C#图片批量下载 项目 代码 using Aspose.Cells; using NLog; using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.…

【zookeeper 第六篇章】分布式锁

一、分布式锁 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。 二、zookeeper 分布式锁 1、客户端A创建临时顺序节点 demo。并在节点下创建 x_00000001。 2、客户端A判断是否自己是第一个节点,如果是就锁成功。 3、客户端B创建临时顺序节点 demo。 并…

文件操作及面试题

目录 文本文件和二进制文件 File概述 递归去查看某个目录下的所有文件与目录 InputStream概述 OutputStream 概述 文件操作的应用 面试题:递归文件路径并且删除指定文件 将一个指定路径的文件复制到另一个文件中去 1.文件 此处的文件有多种含义&#xff0c…

基于京东家电数据分析与价格预测研究【爬虫、Pyecharts、Flask、机器学习】《商品可换》

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍研究背景研究目的研究意义数据获取数据预处理数据分析与可视化大屏可视化基于Flask的系统框架集成价格预测模型每文一语 有需要本项目的代码或文档以及全部资源,或者部署…

去字节面试大模型算法岗,体验极佳!!

最近这一两周看到不少互联网公司都已经开始秋招提前批了。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友…

拳击与格斗杂志拳击与格斗杂志社拳击与格斗编辑部2024年第4期目录

搏击研究 拳击运动员灵敏素质训练策略研究 巫金君; 4-6 拳击运动员体能训练的方法与策略 彭天泽;任安萍;高刚; 7-9 高校武术教学与体能训练的结合研究 黄昊; 10-12《拳击与格斗》投稿:cn7kantougao163.com 拳击运动员核心力量训练研究 宋林董;张钰涵…

漏洞挖掘之再探某园区系统

漏洞挖掘之再探某园区系统 上次提到还有一处可能存在任意用户登录的点,最近没什么研究就写一下,顺便看看还有其他漏洞不 0x01 任意用户登录 1、漏洞分析 通过上次提到的搜索new UserBean()的思路,发现还有一处创建用户的方法 public voi…

FPGA设计之跨时钟域(CDC)设计篇(4)----多bit信号的跨时钟域(CDC)处理方法(手撕代码)

1、为什么多bit信号跨时钟域与单bit不同 ? 跨时钟域的处理可以分为两个大类:单Bit信号跨时钟域处理、多Bit信号跨时钟域处理。分类的原因是多bit信号的传递不光只有亚稳态这一个问题,还可能会因为多个信号之间由于工艺、PCB布局等因素导致的信号传输延时(skew)的存在,从而…