Skip to content

程序员灯塔

Menu
  • Download
  • sitemap
  • 文章归档
  • 标签归档
  • 示例页面
Menu

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

Posted on 2019 年 10 月 14 日

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流程都是相同的。

近期文章

  • 技术网站
  • 世界,您好!
  • Git学习记录(learngitbranching.js.org)
  • 阿里职场潜规则
  • 寻找两个正序数组的中位数

近期评论

  1. 一位 WordPress 评论者 发表在 世界,您好!

归档

  • 2024 年 9 月
  • 2024 年 3 月
  • 2022 年 12 月
  • 2021 年 8 月
  • 2021 年 6 月
  • 2021 年 3 月
  • 2021 年 2 月
  • 2020 年 11 月
  • 2020 年 5 月
  • 2020 年 3 月
  • 2019 年 11 月
  • 2019 年 10 月
  • 2019 年 9 月
  • 2019 年 7 月
  • 2019 年 6 月
  • 2019 年 5 月
  • 2019 年 3 月
  • 2018 年 9 月
  • 2018 年 8 月
  • 2018 年 7 月
  • 2018 年 4 月
  • 2018 年 2 月
  • 2018 年 1 月
  • 2017 年 12 月
  • 2017 年 11 月
  • 2017 年 10 月
  • 2017 年 8 月
  • 2017 年 7 月

分类目录

  • 未分类
©2025 程序员灯塔 | Design: Newspaperly WordPress Theme