一、初识Hive
1、什么是Hive?
Hive是基于Haddop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表并提供SQL查询功能,可以将SQL语句转换
MapReduce任务运行。
Hive提供了一系列的工具,可以给用来数据提取转换加载(ETL)是一种存储、查询和分析存储在Hadoop中的大规模数据的机制
2、Hive发展历史及版本
2007年8月 – 始于Facebook
2013年5月 – 0.11 Stinger Phase 1 ORC HiveServer2
2013年10月 – 0.12.0 Stinger Phase 2 - ORC improvement
2014年4月 – Hive 0.13.0 as Stinger Phase 3
2014年11月 – Hive 0.14.0
2015年2月 – Hive 1.0.0
2015年5月 – Hive 1.2.0 (1.2.1 本系列课实验重点版本 )
2016年2月 – Hive 2.0.0 (添加 HPLSQL, LLAP)
2016年6月 – Hive 2.1.0 (2.1.0 本系列课实验补充版本 )
3、为什么要使用Hive
提供了一个简单的优化模型
HQL类SQL语法,简化MR开发
支持在不同的计算框架上运行
支持在HDFS和HBase上临时查询数据
支持用户自定义函数、格式
成熟的JDBC和ODBC驱动程序,用于ETL和BI
稳定可靠(真实生产环境)的批处理
有庞大活跃的社区
4、Hive体系架构
Hive的体系结构分以下几个部分
1)用户接口主要是3个:CLI,Client,HWI(Hive Web Interface)
2)Hive将元数据存储在数据库中,如MySQL、Derby。
3)解释器、编译器、优化器完成HQL查询语句从词法分析、语句分析、编译、优化到查询计划的生成。生成的查询计划存储在HDFS中,随后由MapReduce调用执行。
4)Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(注意 含*的查询,例如:select * from tbl 不会生成 MapReduce任务)
5、Hive与传统数据库
6、交互模式
7、Hive数据类型
1)原始数据类型(类似于SQL数据类型)
2)复杂数据类型
* ARRAY:存储的数据为相同类型
* MAP:具有相同类型的键值对
* STRUCT:封装了一组字段
8、Hive元数据结构
9、Hive数据表
分为内部表和外部表
1) 内部表(管理表)
HDFS中为所属数据库目录下的子文件夹
数据完全由Hive管理,删除表(元数据)会删除数据
2)外部表(External Tables)
数据保存在指定位置的HDFS路径中
Hive不完全管理数据,删除表(元数据)不会删除数据
10、Hive建表语句
create table student if not exists (
id int,
name string)
row format delimited fields terminated by ','
location '/file';
11、建表语句分析
二、配置Hive
1、安装准备
jdk-8u221-linux-x64.tar.gz
hadoop-2.6.0-cdh5.14.2.tar.gz