Hive知识汇总

本文详细介绍了Hive的基础知识,包括Hive到MapReduce的执行原理、Hive的分桶表概念及其作用,重点讲解了各种JOIN操作的执行逻辑,如LEFT, RIGHT, FULLOUTER JOIN,并探讨了JOIN的优化策略。此外,还提到了常用的Hive函数和语句,以及LEFT SEMI JOIN的高效实现。最后,文章提供了Hive优化实例和参考资料。" 133224283,19991223,微信小程序前端开发实战指南,"['微信小程序', '前端开发', 'WXML', 'WXSS', 'JavaScript']
摘要由CSDN通过智能技术生成

一、Hive基础

Hive是建立在hadoop上的数据仓库基础架构。
Hive执行入口是Driver,执行的SQL语句首先提交到Drive驱动,然后调用compiler解释驱动,最终解释成MapReduce任务去执行。
Hive的组件:
	 1. Driver组件:该组件包括:Compiler、Optimizer、Executor,它可以将Hive的编译、解析、优化转化为MapReduce任务提交给Hadoop1中的JobTracker或者是Hadoop2中的SourceManager来进行实际的执行相应的任务。
	 2. MetaStore组件:存储着hive的元数据信息,将自己的元数据存储到了关系型数据库当中,支持的数据库主要有:Mysql、Derby、支持把metastore独立出来放在远程的集群上面,使得hive更加健壮。元数据主要包括了表的名称、表的列、分区和属性、表的属性(是不是外部表等等)、表的数据所在的目录。
	 3. 用户接口:CLI(Command Line Interface)(常用的接口:命令行模式)、Client:Hive的客户端用户连接至Hive Server ,在启动Client的时候,需要制定Hive Server所在的节点,并且在该节点上启动Hive Server、WUI:通过浏览器的方式访问Hive。

二、hql到mr的原理

Hive执行原理:
hive执行原理
流程大致步骤为:
1. 用户提交查询等任务给Driver。
2. 编译器获得该用户的任务Plan。
3. 编译器Compiler根据用户任务去MetaStore中获取需要的Hive的元数据信息。
4. 编译器Compiler得到元数据信息,对任务进行编译,先将HiveQL转换为抽象语法树,然后将抽象语法树转换成查询块,将查询块转化为逻辑的查询计划,重写逻辑查询计划,将逻辑计划转化为物理的计划(MapReduce), 最后选择最佳的策略。
5. 将最终的计划提交给Driver。
6. Driver将计划Plan转交给ExecutionEngine去执行,获取元数据信息,提交给JobTracker或者SourceManager执行该任务,任务会直接读取HDFS中文件进行相应的操作。
7. 获取执行的结果。
8. 取得并返回执行结果。

Hive 编译过程:
	1. 将多Multiple join 合并为一个Muti-way join
	 2. 对join、group-by和自定义MR重新划分
	 3. 消减不必要的列
	 4. 在表的扫描操作中使用断言
	 5. 消减不必要的分区
	 6. 抽样查询中,消减不必要的桶
	 7. 优化器还增加了局部聚合操作用于处理大分组聚合和增加再分区操作用于处理不对称的分组聚合

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值