Spark SQL模块代码分析(查询语句到逻辑查询计划树的过程)

SQLContext.executeSql

         SQLContext.parseSql

                   DDLParser//先用DDL解析器解析

                            SparkSQLParser//用于"create table from select clause"形式的DDL语句中解析"select clause"

                   SparkSQLParser//如果DDL解析器结果为空,则用此顶层sql解析器解析

                            AbstractSparkSQLParser.apply

                                     SqlLexical.initialize//收集所有用KEYWORD对象作为保留关键字

                                     SqlLexical.Scanner

                                     PackratParsers.phase

                                               start//使用SparkSQLParser中重写的start变量

                                                        cache

                                                                 CacheTableCommand//进入spark特定的非sql语法识别

                                                        uncache

                                                                 UncacheTableCommand

                                                        set

                                                                 SetCommandParser

                                                        show

                                                                 ShowTablesCommand

                                                        others

                                                                 SqlParser//

                                                                           AbstractSparkSQLParser.apply

                                                                                    SqlLexical.initialize//收集所有用KEYWORD对象作为保留关键字

                                                                                    SqlLexical.Scanner

                                                                                    PackratParsers.phase

                                                                                             start//使用SqlParser中重写的start变量

                                                                                                       select//进入select语法识别

                                                                                                                SELECT

                                                                                                                repsep(project)//把投影节点识别为表达式Parser[Expression]

                                                                                                                FROM

                                                                                                                         relations

                                                                                                                                   relation

                                                                                                                                            relationFactor

                                                                                                                                                     UnresolvedRelation//至此识别出第一个逻辑执行计划节点Parser[LogicalPlan]

                                                                                                       UNION//进入多语句的union语法识别

                                                                                                      insert//进入insert语句识别

SQLContext.executeSql

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值