1.1什么是hive
hive是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。
本
质
是
将
H
Q
L
转
化
为
M
a
p
R
e
d
u
c
e
程
序
。
本质是将HQL转化为MapReduce程序。
本质是将HQL转化为MapReduce程序。
为什么说hive是基于Hadoop的工具呢?
- hive处理的数据存储在HDFS上;
- hive分析数据的底层实现默认为MapReduce;
- 执行程序运行在yarn上;
1.2hive的优缺点
1.2.1 优点
- 操作接口采用类SQL语法,提供快速开发的能力
- 避免写MapReduce,减少学习成本
- hive的执行延时比较高,因此hive常用于数据分析,对实时性要求不高,吞吐量大的场景
- hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
1.2.2 缺点
- HQL的表达能力有限,迭代式算法无法表达,且数据挖掘方面不擅长(迭代算法多)。
- hive的效率比较低
(1)hive自动生成的MapReduce作业通常情况下不够智能;
(2)hive调优比较困难,粒度较粗(模版固定);
1.3 hive的架构
hive主要有四部分组成:SQL Parser解析器、Physical Plan编译器(负责将HQL翻译为MR)、Query Optimizer优化器 、Execution执行器。
元数据(Metastore)包括:表名,表所属的数据库(默认为derby),表的拥有者,列/分区字段,表的类型(是否是外部表),表的数据所在的目录等;
1.4 hive与传统数据库的区别
hive在加载数据的过程中不会对数据进行任何处理,也没有对数据中的某些key建立
索引。hive要访问数据中满足条件的特定数据时,需要暴力扫描整个数据,或者整个表,
所以访问延时较高,同时MR框架本身具有较高的延迟,这决定了hive不适合在线数据
的查询。由于MapReduce的引入,hive可以并行的访问数据,因此即使没有索引,hive
对大量数据的访问也可体现出优势;
传统数据库中通常会针对一个或者几个列建立索引,因此对于少量的特定条件的数据
的访问,数据库有较低的延时,效率较高。
参考文章:
https://blog.csdn.net/liberty12345678/article/details/84718655