1、概念是什么:Hive是基于hadoop的一个数据仓库工具,用于解决海量结构化日志的数据统计,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。本质是:将HQL转化成MapReduce程序。(因此常用于数据分析,参考文章数据库和数据仓库的区别)
1)Hive 处理的数据存储在HDFS
2)Hive 分析数据底层的默认实现是MapReduce
3)执行程序运行在Yarn 上
2、Hive架构原理和运行机制
Hive 通过给用户提供的一系列交互接口(JDBC),接收到用户的指令(SQL),使用自己的Driver,
结合元数据(MetaStore),解析器或编译器将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,
将执行返回的结果输出到用户交互接口(保存到HDFS中)。Hive 是建立在 Hadoop 之上的,所有 Hive 的数据都是存储在 HDFS 中的。
hive优缺点
优点:
1) 操作接口采用类SQL 语法,提供快速开发的能力(简单、容易上手)。
2) 避免了去写MapReduce。
3) Hive 的执行延迟比较高,因此Hive 常用于数据分析,对实时性要求不高的场合。
4) Hive 优势在于处理大数据,对于处理小数据没有优势,因为Hive 的执行延迟比较高。
5) Hive 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
缺点:
1.Hive 的HQL 表达能力有限
(1)迭代式算法无法表达
(2)数据挖掘方面不擅长
2.Hive 的效率比较低
(1)Hive 自动生成的MapReduce 作业,通常情况下不够智能化
(2)Hive 调优比较困难,粒度较粗
内部表
内部表,Hive 会控制着数据的生命周期。 当我们删除一个内部表时,Hive 也会删除这个表中数据。内部表不适合和其他工具共享数据。
外部表
外部表,Hive 并非认为其完全拥有这份数据。删除该表并不会删除掉这份数据,而是删除掉描述表的元数据信息。
内部表和外部表可以相互转换,alter table 表名 set tblproperties ('EXTERNAL'='TRUE'); TRUE为外部表,FALSE为内部表。
排序
1. MapReduce内部排序 Sort By
每个 Reducer 内部进行排序,对全局结果集来说不是排序。
2. 分区排序 Distribute By
分区排序,可结合sort by 使用(hive要求Distribute By写在 Sort By 语句之前)
3. 集群排序 Cluster By
cluster by 除了具有 distribute by 的功能外还兼具 sort by 的功能。但是排序 只能是 升序排序,不能指定排序规则 为 ASC 或者 DESC 。