Hive是基于Hadoop之上的数据仓库,本质上也就是一个数据库,是构建在hadoop HDFS上的一个数据仓库
Hadoop和Hive是基于Linux操作系统创建的
数据仓库:即数据库,用一个仓库来保存数据。数据仓库是一个面向主题的、集成的、不可更新的、随时间不变化的数据集合,它用于支持企业或组织的决策分析处理。
- 面向主题:用户使用数据仓库时关注的数据种类,例如商品信息
- 集成:把分散型的数据集成起来满足一定的要求后存储于数据仓库中
- 不可更新:主要提供数据查询,不做数据更新,且随时间推移不会发生变化
数据仓库的结构和建立过程:
- 数据源:业务数据系统、文档资料、其他数据
- 数据存储及管理:ETL。抽取(Extract)、转换(Transform)、装载(Load)
- 抽取:把数据源的数据按照一定的方式读取出来
- 转换:不同数据源的数据格式可能不同,需要按照一定的格式进行转换
- 装载:将满足格式的数据装到数据仓库中
- 数据仓库引擎:建立数据仓库后,利用数据仓库引擎向外提供服务。不同的服务器提供不同的服务
- 前端展示:数据查询、数据报表、数据分析、各类应用
与其他传统基础的数据库【Oracle、Mysql】不同,
Hive是建立在Hadoop HDFS上的数据仓库基础架构,数据存储在HDFS上。
Hive可以用来进行数据提取转化加载(ETL)
Hive定义了简单的类似SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据
允许熟悉MapReduce开发者的开发自定义的mapper和reducer,来处理内建的mapper和reducer,无法完成复杂的分析工作
Hive是SQL解析引擎,将SQL语言转移成M/R job,之后在Hadoop执行
Hive的表其实就是HDFS的目录/文件,Hive表存在HDFS的目录上,Hive数据存在HDFS文件中。
Hive的管理:
- CLI(命令行)方式
直接输入#<HIVE_HOME>/bin/hive的执行程序 退出用quit
输入#hive --service cli 退出用exit
清屏:Ctrl + L或者 ! clear;
查看数据仓库中的表信息:show tables
注释: -- + 注释内容
查看表结构: desc + 表名
查看HDFS上的文件: dfs -ls + 目录 【以递归方式查看目录及子目录文件 dfs -lsr + 目录】
执行操作系统的命令:! + 命令 例如 ! pwd 查看当前目录
执行HQL语句: select *** from ***【Hive将命令转为MapReduce作业,之后在Hadooop上执行。Select * from +表 查询所有信息没有必要转化为MapReduce】
执行sql文件:source + 目录
调节为静默模式,不产生MapReduce的调试信息,直接输出最终结果:hive -S
操作系统执行Hive命令:hive -e ‘语句’【hive -S -e ‘语句’为静默模式】
【执行Hive命令需要注意语句最后要加分号’;’】
- Web界面方式
端口号9999
启动方式:#hive --service hwi
通过浏览器来访问:http://<IP地址>:9999/hwi/
【注意需要下载src源代码文件后编译运行产生web界面方式打成war包后更改path文件;注意需要把jdk的jar包拷贝到hive的bin下】
- 远程服务启动方式
端口号10000
启动方式:#hive --service hiveserver【若以JDBC或ODBC的程序登录到hive中操作数据时,必须选用远程服务启动方式,启动Thrift Server】
Hive的数据类型:
Hive -- 数据仓库,本质数据库。可以创建表,列等
基本数据类型——
- 整数类型:tinyint/smallint/int/bigint
- 浮点数类型:float/double
- 布尔类型:boolean
- 字符串类型:string/varchar/char【varchar表示字符串长度最大为20,char表示长度固定20,及时实际长度没有20也会按照20计算】
复杂数据类型——
- Array:数组类型,由一系列相同数据类型的元素组成的集合
grade为多门科目的成绩用数组
- Map:集合类型,包含key-value键值对,可通过key来访问元素
多门科目中的一门成绩
多门科目同时表示
- Struct:结构类型,可包含不同数据类型的元素,这些元素可通过“点语法”的 方式来得到所需要的 元素
多种信息在struct中
时间类型——
- Date
查看当前系统时间戳的偏移量:select unix_timestamp()
- Timestamp
【Date和Timastamp转换用cast函数】
Hive数据存储:
- 基于HDFS文件系统
- 无专门的数据存储格式(文件后缀无所谓)
- 存储结构主要有:数据库、文件、表、视图
- 可直接加载文本文件(.txt文件)
- 创建表时,指定Hive数据的列分隔符与行分隔符