hive-基础-sql解析

HIVE

支持:MapReduce、Spark、Tez
Hive系统由:用户接口层、HiveServer层、元数据管理、HiveQL解析器、执行引擎构成

用户接口层
CLI(需要机器安装hive)
Beeline(HiveServer2大数据量访问问题,jdbc)
JDBC访问HiveServer2
ODBC(HiveServer1废弃)

HiveServer

元数据管理
库、表、字段、类型、序列化方式、存储格式、Hive函数信息、分桶信息
关系型数据库中:MySQL、Postgres、Oracle、MS SQL Server以及derby
derby是内置的数据库
Hive元数据管理通过JPOX ORM框架来修改、查询、存储元数据
元数据管理将启动一个Thrift服务metastore server,客户端通过Thrift协议访问metastore server,支持多种语言

HiveQL解析器
对HQL进行词法分析、语法分析、语义分析->底层MR任务
ANTLER使用自顶向下的分析方法LL(k),将语言转换为相应的抽象语法树(AST);
用户编写词法规则和语法规则,使用ANTLER提供的API,可实现语言到AST的转换;
词法规则:HiveLexer.g
语法规则:HiveParser.g、FromClauseParser.g

语义分析:AST->MR任务

  1. Antler将HiveQL转化为AST抽象语法树,交给语义分析器进行处理;
  2. 语义分析器首先对AST进行解析提取语法树的相关信息如表名称,select表达式,group by表达式等,存放在QueryBlock对象中;
  3. 接着,根据QueryBlock对象生成逻辑算子(Operator)DAG,一个算子代表了对数据库中一条记录的处理过程,Hive通过一系列具有前后依赖关系的算子对数据进行处理,这些前后依赖关系的算子构成了一张DAG图。
  4. 语义分析器对生成的Opeator DAG进行优化处理,加快数据处理速度;
  5. 优化后的Operator DAG紧接着被转换成底层计算引擎执行的任务(Task)
  6. 一条HiveQL语句会生成多个任务,这些任务存在先后的依赖关系,因此任务和算子类似,也以DAG图的方式组织。
  7. 对Task DAG图进行优化并提交给底层技术引擎执行。

执行引擎
行逻辑算子DAG中的数据处理逻辑
现在支持:MapReduce、Spark和Tez

posted @ 2016-11-17 19:19  zhangshihai1232  阅读(789)  评论(0)    收藏  举报