作者:禅与计算机程序设计艺术
1.简介
Hive 是基于 Hadoop 的一个开源数据仓库系统,其存储数据采取了 HDFS (Hadoop 文件系统)作为底层文件存储。由于 Hive ql 中定义的查询语言 SQL 在运行时需要将 SQL 转换为 MapReduce 操作并执行,因此性能上存在一些限制,对一些复杂的查询效率较低,Hive 提供了一个 SQL 查询引擎 hive-thriftserver 来支持 SQL 查询。hive-thriftserver 使用 HiveQLParser 将 SQL 转换为抽象语法树(Abstract Syntax Tree),然后再进行解释和优化,最终生成执行计划,最后在 Hadoop 上执行相应的 MapReduce 作业。但是这种直接将 SQL 语句转换成 AST 的方式使得扩展性、性能等方面受到很大的影响。如果要更好地支持复杂查询,就需要自行开发一个解析器和语法分析器。本文尝试通过 ANTLR 对 Hive ql 中的 SQL 语句进行解析,进而实现对 SQL 的拓展。
2.基本概念术语说明
2.1. SQL
SQL(Structured Query Language)即结构化查询语言,它是用于存取、更新和管理关系数据库管理系统(RDBMS)中的数据的语言。其标准定义于 1986 年 ISO/IEC 标准 ISO/IEC 9075-1:1986(E) 。SQL 包括 Data Definition Language(DDL)、Data Manipulation Language(DML)和 Data Control Language(DCL)。其中,DML 是指插入、删除、修改和查询数据;DDL 是指定义数据库
版权归原作者 禅与计算机程序设计艺术 所有, 如有侵权,请联系我们删除。