失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 大数据系列之数据仓库Hive原理

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

时间:2021-05-31 09:49:45

相关推荐

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

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

原文链接:/cnmenglang/p/6684615.html

如果觉得《大数据系列之数据仓库Hive原理》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。