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,申请资源进行调度,执行具体物理计划的逻辑了。

相关推荐
冰冰菜的扣jio11 分钟前
InnoDB对于MVCC的实现
java·数据库·sql
GIS工具-gistools202124 分钟前
台湾加油站分布地图数据
大数据·gis·加油站
ctrigger1 小时前
监理工程师考试题型有哪些?4科题型+分值表
大数据·javascript·算法
静听松涛1331 小时前
在线协作跨职能泳道图制作工具 PC版
大数据·论文阅读·人工智能·信息可视化·架构
Hello.Reader1 小时前
Flink ML 二分类评估器 BinaryClassificationEvaluator AUC、PR-AUC、KS 一次搞懂
大数据·分类·flink
无人装备硬件开发爱好者1 小时前
AI 辅助程序设计的趋势与范式转移:编码、审核、测试全流程深度解析
大数据·人工智能·架构·核心竞争力重构
Hello.Reader1 小时前
Flink ML K-Means 离线聚类 + 在线增量聚类(mini-batch + decayFactor)
大数据·分类·flink
l1t1 小时前
DeepSeek对利用DuckDB求解Advent of Code 2021第9题“烟雾盆地”第二部分SQL的分析
数据库·人工智能·sql·递归·duckdb·deepseek·cte
草莓熊Lotso1 小时前
技术深耕,破局成长:我的2025年度技术创作之路
大数据·开发语言·c++·人工智能·年度总结