Hive系列博文,持续更新~~~

大数据系列之数据仓库Hive原理

大数据系列之数据仓库Hive安装

大数据系列之数据仓库Hive中分区Partition如何使用

大数据系列之数据仓库Hive命令使用及JDBC连接

Hive的工作原理简单来说就是一个查询引擎

先来一张Hive的架构图:

Hive的工作原理如下:

接收到一个sql,后面做的事情包括:
1.词法分析/语法分析
使用antlr将SQL语句解析成抽象语法树-AST
2.语义分析
从Megastore获取模式信息,验证SQL语句中队表名,列名,以及数据类型的检查和隐式转换,以及Hive提供的函数和用户自定义的函数(UDF/UAF)
3.逻辑计划生产
生成逻辑计划-算子树
4.逻辑计划优化
对算子树进行优化,包括列剪枝,分区剪枝,谓词下推等
5.物理计划生成
将逻辑计划生产包含由MapReduce任务组成的DAG的物理计划
6.物理计划执行
将DAG发送到Hadoop集群进行执行
7.将查询结果返回

流程如下图:

Query Compiler

新版本的Hive也支持使用Tez或Spark作为执行引擎。


物理计划可以通过hive的Explain命令输出

例如:

0: jdbc:hive2://master:10000/dbmfz> explain select count(*) from record_dimension;
+------------------------------------------------------------------------------------------------------+--+
|                                               Explain                                                |
+------------------------------------------------------------------------------------------------------+--+
| STAGE DEPENDENCIES:                                                                                  |
|   Stage-1 is a root stage                                                                            |
|   Stage-0 depends on stages: Stage-1                                                                 |
|                                                                                                      |
| STAGE PLANS:                                                                                         |
|   Stage: Stage-1                                                                                     |
|     Map Reduce                                                                                       |
|       Map Operator Tree:                                                                             |
|           TableScan                                                                                  |
|             alias: record_dimension                                                                  |
|             Statistics: Num rows: 1 Data size: 543 Basic stats: COMPLETE Column stats: COMPLETE      |
|             Select Operator                                                                          |
|               Statistics: Num rows: 1 Data size: 543 Basic stats: COMPLETE Column stats: COMPLETE    |
|               Group By Operator                                                                      |
|                 aggregations: count()                                                                |
|                 mode: hash                                                                           |
|                 outputColumnNames: _col0                                                             |
|                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE    |
|                 Reduce Output Operator                                                               |
|                   sort order:                                                                        |
|                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE  |
|                   value expressions: _col0 (type: bigint)                                            |
|       Reduce Operator Tree:                                                                          |
|         Group By Operator                                                                            |
|           aggregations: count(VALUE._col0)                                                           |
|           mode: mergepartial                                                                         |
|           outputColumnNames: _col0                                                                   |
|           Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE          |
|           File Output Operator                                                                       |
|             compressed: false                                                                        |
|             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE        |
|             table:                                                                                   |
|                 input format: org.apache.hadoop.mapred.SequenceFileInputFormat                       |
|                 output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat             |
|                 serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe                            |
|                                                                                                      |
|   Stage: Stage-0                                                                                     |
|     Fetch Operator                                                                                   |
|       limit: -1                                                                                      |
|       Processor Tree:                                                                                |
|         ListSink                                                                                     |
|                                                                                                      |
+------------------------------------------------------------------------------------------------------+--+
42 rows selected (0.844 seconds)

除了DML,Hive也提供DDL来创建表的schema。
Hive数据存储支持HDFS的一些文件格式,比如CSV,Sequence File,Avro,RC File,ORC,Parquet。也支持访问HBase。
Hive提供一个CLI工具,类似Oracle的sqlplus,可以交互式执行sql,提供JDBC驱动作为Java的API。

转载请注明出处:

作者:mengfanzhu

原文链接:http://www.cnblogs.com/cnmenglang/p/6684615.html

大数据系列之数据仓库Hive原理相关推荐

  1. 大数据系列之数据仓库Hive命令使用及JDBC连接

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  2. hive 如果表不存在则创建_从零开始学习大数据系列(四十七) Hive中数据的加载与导出...

    [本文大约1400字,阅读时间5~10分钟] 在<从零开始学习大数据系列(三十八) Hive中的数据库和表>和<从零开始学习大数据系列(四十二)Hive中的分区>文章中,我们已 ...

  3. 大数据系列——什么是hive?hive用来干什么的?hive常见问题是啥?

    目录 一.什么是hive 二.为什么要使用Hive 三.Hive与Hadoop的关系 四.Hive与HDFS的关系 五.Hive与传统数据库区别 六.Hive中的数据存储是怎样的 七.对hive进行增 ...

  4. 大数据学习之数据仓库Hive

    数据仓库概念 数据仓库是一个面向主题的.集成的.相对稳定的.反映历史变化的数据集合,用于支持管理决策. 传统的数据仓库是数据存储产品也是数据处理分析产品,能同事支持数据的存储和处理分析 传统数据仓库所 ...

  5. 23篇大数据系列(二)scala基础知识全集(史上最全,建议收藏)

    作者简介: 蓝桥签约作者.大数据&Python领域优质创作者.管理多个大数据技术群,帮助大学生就业和初级程序员解决工作难题. 我的使命与愿景:持续稳定输出,赋能中国技术社区蓬勃发展! 大数据系 ...

  6. 23篇大数据系列(一)java基础知识全集(2万字干货,建议收藏)

    大数据系列爽文,从技术能力.业务基础.分析思维三大板块来呈现,你将收获: ❖ 提升自信心,自如应对面试,顺利拿到实习岗位或offer: ❖ 掌握大数据的基础知识,与其他同事沟通无障碍: ❖ 具备一定的 ...

  7. 大数据系列(一)之hadoop介绍及集群搭建

    大数据系列(一)之hadoop介绍及集群搭建 文章最早发布来源,来源本人原创初版,同一个作者: https://mp.weixin.qq.com/s/fKuKRrpmHrKtxlCPY9rEYg 系列 ...

  8. python 大数据开发工程师_大数据系列之大数据开发工程师

    继续介绍大数据系列岗位的要求,今天是"最热门"的岗位大数据开发工程师,之所以说热门主要是基于2个原因,一是因为很多应届生或者想转入大数据行业的同学,都是期望从事"大数据开 ...

  9. 大数据系列 之 学习准备

    在学习大数据的过程中,需要具备的能力或者知识,在这里简单的罗列一下: 语言基础:需要会使用shell脚本.java和scala(这俩语言主要是用于日常代码和阅读源代码) 工具:IDE如eclipse或 ...

最新文章

  1. Linux文本处理(二)
  2. 现在的人工智能只是“窄AI”?
  3. Android Bander设计与实现 - 设计篇
  4. 安卓TTS语音合成经验分享(科大讯飞语音+)集成
  5. Spring 事务core 模块-JdbcTeamplate 对象
  6. C# ProgressBar用法:模拟进度条
  7. 从AppDomain迁移到AssemblyLoadContext
  8. 紧急预警:wls9_async_response.war组件漏洞的延续
  9. 读取Excel任务列表并显示在Outlook日历上
  10. python字符串连接数字电视_【学习猿地】初识python脚本 #千万别看,我怕你控制不住...
  11. 阿里部署edas,采用hsf框架,启动项目时无法启动的问题。
  12. 全网软件:高级信息搜索数据采集软件 InfoSeek FastSeek
  13. html 中数字换行,CSS实现连续数字和英文的自动换行的方法
  14. 云+社区杂货摊年终上新,定制礼盒发发发!
  15. 【微信小程序】各种页面特殊效果合集第二期
  16. hp服务器的网络显示红叉,惠普笔记本白屏后重启后显示红叉网络信号联不上网的原因?...
  17. RCNN系列发展历程
  18. SpringBoot初始化过程核心源码剖析
  19. Linux基本命令及Linux文件类型
  20. iOS开发实现资源包增量更新

热门文章

  1. 發送郵件中常见的异常信息
  2. 芋道源码的周八(2018.01.20)
  3. spring4.x注解
  4. 10G以太网光口与Aurora接口回环实验
  5. vue2安装插件失败方法
  6. 电流和电压的产生原理
  7. 11-wtm附件管理
  8. oracle 更新update语句
  9. vscode中文路径问题
  10. 2019/9/2 日常学习的一天