Spark SQL解析过程
在Spark 2.0之后,Spark SQL使用Antlr 4来解析SQL表达式,其解析描述文件路径为
spark源码根路径\sql\catalyst\src\main\antlr4\org\apache\spark\sql\catalyst\parser\SqlBase.g4,
比如下面的sql语句是如何转化成RDD的。
select name from person where age > 18
SQL执行流程:
不管解析被划分为几步,在Spark 执行环境中,都要转化成RDD的调用代码,才能被spark core所执行
那么这里面有个关键的点,就是查询的SQL , 怎么转化成未解析的逻辑计划;未解析的逻辑计划这个阶段接受的是抽象的语法树,所以我们需要知道的就是,这个SQL语句是就是通过Antlr4转成抽象语法树的;
Antlr4入门
1、下载Antlr4
链接地址:https://www.antlr.org/download/index.html
2、把下载的包放在安装目录
3、编写bat脚本,内容如下antlr4.bat
java -cp antlr-4.5.3-complete.jar org.antlr.v4.Tool %*
4、把安装目录添加到环境变量
5、构建maven项目,添加如下依赖
6、编写antlr文件,以g4结尾
7、命令行进入antlr\src\main\java\com\antlr4>目录中,执行antlr4 LearnAntlr.g4,生成代码如下:
8、新建ListenerRewrite继承LearnAntlrBaseListener
9、词法和语法解析
10、运行代码,输出hello world
举报/反馈

沙砾大数据

1467获赞 166粉丝
大数据工程师,欢迎分享交流
关注
0
0
收藏
分享