Spark SQL 执行计划解析源码分析

本文用于记录Spark SQL执行计划解析的源码分析。文中仅对关键要点进行提及,无法面面具到,仅描述大体的框架。

Spark的Client有很多种,spark-sql,pyspark,spark- submit,R等各种提交方式,这里以spark.sql()方法作为源码分析入口:

在介绍具体的解析流程之前,我们画了一个图,图中展示了SQL被解析的各个阶段:

  1. SQL文本会经过antlr框架执行词法解析,语法解析,随后生成一个AST树,进入后续各个阶段的执行计划解析和优化
  2. 首先是进入parsing阶段,由Parser解析LogicalPlan,生成unresolved LogicalPlan。Parser是ParserInterface的实现,具体的继承关系如下图:
  3. 接下来进入analysis阶段,有Analyzer执行一系列的rule生成analyzed LogicalPlan。Analyzer继承自RuleExecutor,是一系列analyze的rule集合
  4. 接着进入optimization阶段,负责优化的是Optimizer,它也是继承自RuleExecutor,随后生成optimized LogicalPlan。
  5. optimized LogicalPlan会被被传递给SparkPlanner进入planning阶段,同样也是一系列的Rule,不同的是这一阶段已经到了物理计划的解析,输出结果不再是LogicalPlan,而是SparkPlan。
  6. 第一个planning阶段结束后,还会再次进去planning阶段,此时负责优化的是preparations(一些列针对SparkPlan优化的Rule),主要就是插入AQE相关的优化。此时生成的就是executedPlan。

至此,Spark SQL的执行计划(逻辑计划,物理计划)解析就告一段落,剩下的就是拿到executedPlan开始切分stage,task,申请资源进行调度,执行具体物理计划的逻辑了。

相关推荐
还是奇怪38 分钟前
AI 提示词工程入门:用好的语言与模型高效对话
大数据·人工智能·语言模型·自然语言处理·transformer
Data_Journal2 小时前
如何使用cURL更改User Agent
大数据·服务器·前端·javascript·数据库
weixin_446260852 小时前
城市智能化的底层基石:基于腾讯地图服务生态的移动定位与导航架构指引
大数据·人工智能·架构
qq_283720053 小时前
Vibe Coding 氛围编程入门教程:AI 时代的全新开发范式(零基础到实战)
大数据·人工智能
Volunteer Technology3 小时前
ES并发控制
大数据·elasticsearch·搜索引擎
小飞象—木兮4 小时前
《销售数据分析标准实践手册》:核心内涵与关键指标、落地销售数据分析的全流程···(附相关材料下载)
大数据·人工智能·数据挖掘·数据分析
howard20054 小时前
2.4.3 集群模式运行Spark项目
spark·项目打包·提交运行
盟接之桥4 小时前
什么是EDI(电子数据交换)|制造业场景解决方案
大数据·网络·安全·汽车·制造
孤雪心殇4 小时前
快速上手数仓基础知识
数据仓库·hive·spark
让我上个超影吧5 小时前
从Prompt工程到Harness工程:AI Agent落地的下一代软件工程范式
大数据·人工智能