温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。
在前面的博文里,我已经介绍了
原创 | 大数据入门基础系列之浅谈Hive和HBase的区别
原创 | 大数据入门基础系列之详谈Hive的数据定义语言(DDL)
前言
在
里,我已经谈及到了
驱动器: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/
以及对应本平台的QQ群:161156071(大数据躺过的坑)
本文版权归(大数据躺过的坑)作者和微信公众平台共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。 如果您认为这篇文章还不错或者有所收获,您可以通过下边的“打赏”功能 打赏我一杯咖啡【物质支持】,也可以点击右下角的【点赞】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力!
看完本文有收获?请转发分享给更多人
关注「大数据躺过的坑」,提升大神技能
觉得不错,请点赞和留言↓↓↓