
1. 基本概念
1.1. 什么是Hive
简介
是基于Hadoop的数仓工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能,
Hive本质:
将HQL转化为MapReduce程序
- Hive处理的数据存储在HDFS上
 - Hive分析数据底层的实现是MapReduce
 - 执行程序运行在Yarn上
 
1.2. 优缺点
1.2.1. 优点
- 接口采用类sql语法,提供快速开发能力(简单,容易上手)。
 - 避免写MapReduce,减少学习成本
 - Hive执行延迟比较高,常用于数据分析,对实时性要求不高的场景。
 - 优势在于处理大数据
 - 支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
 
1.2.2. 缺点
- HQL表达能力有限
- 迭代式算法无法表达
 - 数据挖掘方面不擅长,由于MapReduce数据处理流程的限制,效率更高的算法无法实现
 
 - Hive的效率比较低
- Hive自动生成MapReduce作业,通常情况下不够智能
 - 调优比较困难,粒度较粗
 
 
1.3. 架构

用户接口: Client
CLI(hive shell),JDBC/ODBC, WEBUI
元数据:Metastore
元数据包括:表名。表所属的数据库,表的拥有者,列/分区字段,表的类型(是否是外部表),表的数据所在目录等;
默认存储在自带的derby数据库中,推荐使用MySql.
1.3.2. 运行机制

2. 数据类型
2.1. 基本数据类型
2.2. 复杂数据类型
Struct, Map, Arrary
举例:
假设有以下数据:
1  | {  | 
有以下文本文件:
1  | zhangsan,lisi_wangwu,lao da:18_lao er:17,zhong guan cun_beijing  | 
 注意:Map,Struct和Array里的元素关系都可以用同一个字符表达,这里用”_”
建表:
1  | create table test(  | 
从文件中添加数据:
1  | hive> load data local inpath '/home/bruce/SoftWare/apache-hive-2.3.7-bin/test/test' into table test;  | 
查看数据库
1  | hive> select * from test;  |