• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Spark-SQL中对Sql和Hql在解析上的区别是什么? 

hive wangting 1个月前 (10-14) 23次浏览

Sql由SQLContext处理,HQL由HiveContext处理。二者使用不同的parser进行解析。

Sql parser的实现在Spark SQL catalyst源码中,基于scala ddl paser的库文件实现了一套词法语法分析器。

HQL是SQL在Hive中的”方言”,它的解析借助开源语法分析器antrl实现。

在Hive源码中能看到一些.g后缀的文件,这些文件就是用于描述文法的,antrl将根据这些文件对输入进行词法语法分析生成抽象语法树(AST)。

无论Sql还是Hql,在经过解析后生成的AST都是相同的,后续的analyze,optimize和execute流程都是相同的。


喜欢 (1)