Spark SQL 解析-转换-执行过程

本文详细解析了Spark SQL的执行过程,包括SQL的抽象语法树生成、Unresolved Logic Plan、Analyzed Logical Plan、Optimized Logic Plan的生成,以及最终转化为SparkPlan的物理执行计划。通过理解这些步骤,有助于深入掌握Spark SQL的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

前文

正文

1.概述

2. 抽象语法树生成

3.Unresolved Logic Plan 逻辑执行计划生成

4. Analyzed Logical Plan 逻辑执行计划生成

5.Optimized Logic Plan 逻辑执行计划生成

6.SparkPlan 物理执行计划的生成


前文

     Spark SQL以及Dataset体系在Spark中具有越来越重要的作用,基于RDD的体系正在被弱化,使用Dataset或者SQL编写的代码,甚至可以经过稍微修改之后迁移到Structure Streaming中进行执行。而且语法解析、语义解析和执行在很多地方也会被用到,比如规则引擎的解析和执行就可以基于语句来实现。

     闲暇时间阅读了SparkSQL的一些书籍和资料,笔记如下。

正文

1.概述

    用户编写的SQL是无法直接被底层计算框架执行的,必须要经过几个转换阶段,转变成框架能够识别的代码或者类对象,在Spark中,一般需要经过以下几个步骤,分为逻辑执行计划部分和物理执行计划部分。

   SQL Query,需要经过词法和语法解析,由字符串转换为,树形的抽象语法树, 通过遍历抽象语法树生成未解析的逻辑语法树(unresolved logic plan),对应SQL解析后的一种树形结构,本身不包含任务数据信息,需要经过一次遍历之后,转换成成包含解析后的逻辑算子树(Analyzed LogicPlan),本身携带了各种信息,最后经过优化后得到最终的逻辑语法树(Optimized LogicPlan)。  

    不管解析被划分为几步,在Spark 执行环境中,都要转化成RDD的调用代码,才能被spark core所执行,示意图如下:

2. 抽象语法树生成

   一般的从SQL语句语句转换成抽象的树状结构,需要经过词法分析和语法分析两个过程,实现较为繁琐,但是随着编译理论的成熟,开发人员可以借助各种各样的生成器,来实现词法分析和语法解析。

    spark中使用的框架为Anylr 4,通过脚本文件进行SQL 关键字和语法的定义,然后通过框架来实现词法分析和语法分析,详情可见Antlr 百科,通过编译解析Antlr的脚本定义文件,我们可以获得如下几个重要的文件:

a.****Lexer 词法解析器

b.****Parser  语法解析器   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值