SPARKSQL3.0-源码剖析全流程导读

news2024/11/28 10:56:27

SPARKSQL-源码剖析全流程导读

一、处理流程

spark从一条sql语句一步一步转换成物理执行结果,这中间需要经历几个阶段,如下图:

image-20221116173128667

二、各阶段概述

1、Unresolved-未解析阶段

此阶段主要做了两件事:

1、将sql字符串通过antrl4转化成AST逻辑语法树

2、将AST语法树经过spark自定义访问者模式转化成logicalPlan【可以理解为精简版语法树】

该阶段语法树中仅仅是数据结构,不包含任何数据信息

2、Analyzed-分析阶段

此阶段会将上一阶段获得的逻辑语法树和元数据进行绑定,构建出更包含元数据的逻辑语法树

如果是hivesql,则此阶段会和hive-catalog进行交互

3、Optimized-优化阶段

此阶段是对分析阶段的逻辑计划做进一步优化,将应用各种优化规则对一些低效的逻辑计划进行转换

例如将原本用户不合理的sql进行优化,如谓词下推,列裁剪,子查询共用等。

4、PhysicalPlan-物理计划阶段

物理计划阶段将上一步逻辑计划阶段生成的逻辑算子树进行进一步转换,生成物理算子树,物理算子树的节点会直接生成 RDD 或对 RDD 进行 transformation 操作;

5、Cost-Model-策略选取阶段

Cost Model 对应的就是基于代价的优化(Cost-based Optimizations,CBO,详见 SPARK-16026 ),核心思想是计算每个物理计划的代价,然后得到最优的物理计划。但是截止到spark3.0,这一部分并没有实现

5、Prepared-预提交阶段

此节点是提交前的优化,内部是同的规则作用在sparkPlan物理树,从而获得优化后的可执行的物理树

其中有个重头戏,就是spark3.0中新增功能AQE【自适应执行】,SPARK-9850 在 Spark 中提出了自适应执行的基本思想,关于功能实现不在这里过多陈述,可查看相关文献;由此可以看出AQE功能目前只能通过sparksql才能使用

三、文章浏览顺序

1、SPARKSQL3.0-Antlr4由浅入深&SparkSQL语法解析

2、SPARKSQL3.0-SessionState构建源码剖析

3、SPARKSQL3.0-Unresolved阶段源码剖析

4、SPARKSQL3.0-Analyzer阶段源码剖析

5、SPARKSQL3.0-Catalog源码剖析

6、SPARKSQL3.0-DataFrame-API与spark.sql()区别源码分析

7、SPARKSQL3.0-Optimizer阶段源码剖析

8、SPARKSQL3.0-PhysicalPlan物理阶段源码剖析

9、SPARKSQL3.0-各阶段自定义扩展规则源码剖析

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

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

相关文章

元数据管理系统

数据治理工具–元数据系统数据服务基础能力之元数据管理元数据管理系统设计 1.元数据概述 1.1 介绍 如果想建设好元数据系统,需要理解元数据系统的相关概念,如数据、数据模型、元数据、元模型、ETL、数据血缘等等。 首先,要清楚数据的定义…

python_函数

一、函数介绍组织好的,可重复使用的,用来实现特定功能的代码段例如:len() 函数--Python内置函数# 已组织好的、可重复使用,针对特定功能 def my_len(data):count 0for i in data:count 1print(f"字符串{data}的长度是{coun…

WebRTC实现一个网页在线录制视频

电脑录制视频几乎不会用到,当有需要的时候就各种找软件找工具,并且都会找免费的。现在市场上肯定有很多符合需求,只是那么偶尔的情况下,而且使用场景不是那么多要求的情况下,一个网页在线直接录屏是不是非常nice。 很…

40Java Runtime类

目录 Runtime类 1.概述 2.常见方法 (1).getRuntime返回环境对象 (2).exit停止虚拟机 (3).availableProcessors返回线程数 (4). maxMemory返回获得最大内存 (5).totalMemory返回已经获得内存 (6).freeMemory返回剩余内存 (7).exec运行cmd命令 Runtime类 1.概述 ​ Run…

双亲委派模型机制

文章目录类加载器findClassloadClassJDK双亲委派的破坏第一次破坏第二次破坏tomcat热部署JDK9最新改动双亲委派机制是当类加载器需要加载某一个.class字节码文件时,则首先会把这个任务委托给他的上级类加载器,递归这个操作,如果上级没有加载该…

卷积神经网络<二>keras实现多分支输入VGG

VGG的模型图 VGG使用Keras实现 这里的代码借鉴了VGG实现Keras,但是这段代码不支持多通道,并且vgg函数的扩展性不好。下面修改一下,方便进行多分支图片输入的建立,以及更见方便的调参。 # from keras.models import from keras.l…

MyBatis介绍

MyBatis介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordi…

PMP考试自学可以吗?(含PMP备考资料)

当然是可以的,只要解决了“报考的35学时”这个问题,就只剩怎么备考的问题了。 在一般情况下,建议备考一到三个月,别给自己太长或太短的备考时间,前者坚持不下来,后者备考时间太少,来不及备考充…

戴尔大步进军经典量子计算混合模型

​ (图片来源:网络) 戴尔正将量子计算机融入传统IT的基础架构中,并向新型加速计算机开放了数据中心。这家服务器制造商为传统服务器基础设施创建了一个蓝图,以满足量子系统的独特需求,量子系统速度要比经典…

基于物联网的汽车爆胎预警系统

本设计是基于物联网的汽车爆胎预警系统的设计与实现设计,主要实现以下功能: 1,主机用LCD1602显示温度、气压和距离; 2,主从机间通过ZigBee进行数据的传输; 3,从机检测轮胎气压,温度…

zbxtable

ubuntu install zbxtable 1.新建zbxtable文件夹,将三件套下载到本地存放 mkdir ~/zbxtable ZbxTable: https://dl.cactifans.com/zbxtable/zbxtable-2.1.0.tar.gz ZbxTable-Web: https://dl.cactifans.com/zbxtable/web.tar.gz MS-Agent: https://dl.cactifans.co…

MybatisMybatisPlusSpringboot之最全入门学习教程笔记

1 Mybatis概述 1.1 Mybatis概念 MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发, (1)持久层:负责将数据到保存到数据库的那一层代码。Mybatis就是对jdbc代码进行了封装。 JavaEE三层架构:表现层、业务层、持久层…

ftp协议主动模式与被动模式

FTP主动模式与被动模式 主动模式:客户端给服务端的21控制端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的某个端口,你就从这里把东西给我吧,服务器知道后就会连接客户端已打开的那个数据端口把东西传给客…

SpringBoot配置https

1.Https配置 由于HTTPS具有良好的安全性,在开发中得到了越来越广泛的应用,像微信公众号、小程序等的开发都要使用HTTPS来完成。对于个人开发者而言,一个HTTPS 证书的价格还是有点贵,但是呢,国内的一些云服务器厂商提供…

android studio 项目生成apk的几个问题(备忘)

终于自己做的一个小东西要做完了,最后一步是生成apk,这之前遇到几个问题备忘一下。 1、安装完成后有两个图标,分别是两个activity,卸载一个,另一个也没了。 原因:我原来做一时候没有欢迎界面,…

总结数据结构常用树

树:只有一个根节点,有孩子结点,父节点 二叉树:每个节点最多有两个孩子结点。 二分搜索树:也叫二叉排序树,首先它是一颗二叉树,且左右孩子都存在时,左孩子都小于当前节点值&#xf…

计算机数制(进制转换,原码,反码,补码,真值)

目录 区分进制 带小数点的进制转化 进制转换练习 符号数的表示方法 区分: 考点:给你原码转换补码,补码最负的数的表示,0的表示 原码,反码,补码练习 区分进制 注意微机原理这门课用的是后缀的方式&#xff0…

小学生python游戏编程arcade----碰撞精灵消失问题

小学生python游戏编程arcade----碰撞精灵消失问题前言碰撞精灵消失问题1、多余的精灵不能及时消失1.1 问题1.2 失败代码1.3 记录备忘1.4 代码实现2、放置位置2.1 代码放在ondraw中可以2.2 在update中也可以2.3 碰撞中3、玩家子弹击中敌坦克后的爆炸效果3.1 爆炸类3.2 爆炸列表准…

2022年铁路行业研究报告

第一章 行业概况 铁路运输是主要的陆上交通运输方式之一,铁路是指在综合交通运输体系中,用于运行火车等交通工具行驶的轨道线路。铁路运输是主要的陆上交通运输方式之一,是通过机车牵引车辆组成列车在铁轨上运送客或货的一种运输方式。相比其…

AVL双旋转思路分析与图解

AVL树双旋转思路分析与图解 首先我们要知道什么情况之下我们是要进行双旋转? 当最小不平衡子树为LR型或者RL型的时候, 那么什么时候最小不平衡子树是RL型或者什么时候又是LR型的? 下面我们就先给出LR型, RL型, LL型, RR型最小不平衡子树的概念: LR型最小不平衡子树: 首先拿…