温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
在前面的博文里,我已经介绍了
前言
在
里,我已经谈及到了
驱动器:dirver
包含、解析器、编译器、优化器、执行器
解析器:
将SQL字符串转换成抽象语法树AST,这一步一般都是用第三方工具库完成,比如antlr;对AST语法树进行分析,比如表否存在、字段是否存在、SQL语义是否有误。
编译器:
将AST编译生成逻辑执行计划。
优化器:
对逻辑执行计划进行优化。
执行器:
把逻辑执行计划转换成物理执行计划。对于hive来说,就是MR/TEZ/Spark;
这里,我做个补充。
首先,普及几个概念
• 用户接口:用户访问Hive的入口。
• 元数据:Hive的用户信息与表的MetaData。
•解释器:分析翻译HQL的组件。
•编译器:编译HQL的组件。
•优化器:优化HQL的组件。
• Driver调用编译器(compiler)处理HiveQL字串,这些字串可能是一条DDL、DML或查询语句。
• 编译器将字符串转化为策略(plan)。
• 策略仅由元数据操作和HDFS操作组成,元数据操作只包含DDL语句,HDFS操作只包含LOAD语句。
• 对插入和查询而言,策略由map-reduce任务中的具有方向的非循环图(directedacyclic graph,DAG)组成。
同时,
Driver 调用解释器(Compiler)处理 HiveQL 字串,这些字串可能是一条 DDL、DML或查询语句。编译器将字符串转化为策略(plan)。策略仅由元数据操作 和 HDFS 操作组成,元数据操作只包含 DDL 语句,HDFS 操作只包含 LOAD 语句。对插入和查询而言,策略由 MapReduce 任务中的具有方向的非循环图(directedacyclic graph,DAG)组成。
解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行。
Hive的驱动器包括解释器、编译器、优化器、执行器。
1)解析器(parser):将查询字符串转化为解析树表达式。
2)语义分析器(semantic analyzer):将解析树表达式转换为基于块(block-based)的内部查询表达式。
3)逻辑策略生成器(logical plan generator):将内部查询表达式转换为逻辑策略,这些策略由逻辑操作树组成。
4)优化器(optimizer):通过逻辑策略构造多途径并以不同方式重写。
Hive构建在Hadoop之上
(1)HQL中对查询语句的解释、优化、生成查询计划是由Hive完成的。
(2)所有的数据都是存储在Hadoop中。
(3)查询计划被转化为MapReduce任务,在Hadoop中执行(有些查询没有MR任务,如:select * from table)。
(4)Hadoop和Hive都是用UTF-8编码的。
后续的微信公众号博文
将分别剖析
原创 大数据入门基础系列之Hive驱动器之解释器
原创 大数据入门基础系列之Hive驱动器之编译器
原创 大数据入门基础系列之Hive驱动器之优化器
原创 大数据入门基础系列之Hive驱动器之执行器
http://www.cnblogs.com/zlslch/和http://www.cnblogs.com/lchzls/
http://www.cnblogs.com/sunnyDream/
看完本文有收获?请转发分享给更多人
关注「大数据躺过的坑」,提升大神技能
觉得不错,请点赞和留言
领取专属 10元无门槛券
私享最新 技术干货