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

相关推荐
andafaAPS12 小时前
安达发|aps高级排产:电动工具行业智能制造的核心引擎
大数据·人工智能·制造·安达发aps·aps高级排产·aps自动排产
penngo12 小时前
FlowLoom:基于 Apache Spark 的可视化数据处理平台
大数据·spark·apache
码农天天12 小时前
轻人力运营实践:中小企业如何通过AI智能体矩阵实现组织重构?
大数据·人工智能·时序数据库
cd_9492172112 小时前
水处理市场升级,台州海德能环保科技凭技术创新与服务并重脱颖而出
大数据·运维·科技
Irene199112 小时前
Flume 中的 Agent(JVM进程)= Source(数据读取) + Channel(数据缓冲) + Sink(数据写入)
大数据·flume
雷工笔记12 小时前
SQL系列2:PostgreSQL 日期时间字段类型选择指南
数据库·sql·postgresql
升鲜宝供应链及收银系统源代码服务12 小时前
升鲜宝 AI 报表原型与接口设计报表模板、交互原型、数据接口与集成规范(一)---升鲜宝生鲜配送供应链管理系统源代码服务
大数据·人工智能·生鲜供应链源代码·供应链源代码出售·生鲜配送源代码服务·门店连锁系统源代码·猪肉生产加工系统源代码
2601_9599862413 小时前
从移动端看MMarkets(评测类)值得关注吗?
大数据·人工智能
段一凡-华北理工大学13 小时前
工业领域的Hadoop架构学习~系列文章02:HDFS架构深度剖析
大数据·人工智能·hadoop·学习·架构·高炉炼铁
humors22113 小时前
Windows运维与安全场景合集(不定期更新)
大数据·运维·服务器·程序人生·网络安全