什么是 HIVE?
Hive 是基于 Hadoop 的一个数据仓库工具,通过他可以实现将结构化的数据文件映射为一张数据库表,并提供简单的 sql 查询功能,同时将 sql 语句转换为 MapReduce 任务进行运行。它为数据仓库的管理提供了许多功能:数据 ETL (抽取、转换和加载)工具、数据存储管理和大型数据集的查询和分析能力。
::[数据仓库]:数据仓库是一个面向主题的,集成的不可更新的,随时间不变化的数据结合,它用于支持企业或组织的决策分析过程。
HIVE 的体系结构
HIVE 的安装模式
1、内嵌模式:默认是元数据 Metadata 存储在自带的 Derby 数据库【内嵌】.
2、本地模式:通常选择 Mysql.作为元数据存储,和 Hive 在同一机器。
3、远程模式:当 HIVE 数据较多时,选择将元数据库 Mysql 低浓度用一个服务器部署。
HIVE 的数据管理
1、CLI(命令行):终端上执行 HIVE 的 sql 语句进行数据库的操作,管理。通过命令 hive
或 hive --service cli
启动。
- 基本数据库命令:show ,desc
- HadoopHDFS 命令:dfs -ls
- linux 命令:!pwd ,!ls
- HQL 语句:select * from table;
只有条件查询的时候才会转换成MapReduce作业,因为select * from会直接返回所有数据。
2、Web 界面:
1. 通过命令 hive --service hwi
启动。
2. 访问:http;//<ip地址>:/9999/hwi/
3、编程接口 JDBC/ThriftServer:
1. 启动远程服务:hive --service hiveservver
,只有在启动远程服务之后才能使用 JDBC/Thrift Server
2. 远程编写 JDBC 程序(同连接 Mysql/oracle)进行数据库操作。
3. 使用 Thrift Server 连接,可以直接执行 HQL 语句。
HQL 的执行流程
HIVE 的数据类型
一、基本数据类型
数值类型 | size | 示例 |
---|---|---|
TINYINT | 1-byte | |
SMALLINT | 2-byte | |
INT/INTEGER | 4-byte | |
BIGINT | 8-byte | |
FlOAT | 4-byte | |
DOUBLE | 8-byte | |
DOUBLE PRECISION | DOUBLE别名,hive2.2的内容 | |
DECIMAL | ||
NUMERIC | same as `DECIMAL`,HIve3.0.0 |
时间/日期类型 | size | 示例 |
---|---|---|
TIMESTAMP | ||
DATE | ||
INTERVAL |
字符串类型 | size | 示例 |
---|---|---|
STRING | ||
VARCHAR | ||
CHAR |
其他类型 | size | 示例 |
---|---|---|
BOOLEAN | ||
BINARY |
二、复杂数据类型
复杂类型 | size | 示例 |
---|---|---|
arrays | ||
maps | ||
structs | ||
union |
HIVE 的数据模型
一、HIVE 数据存储:
HIVE中的数据库就是HDFS的/user/hive/warehouse目录,此目录下的每一个目录(跟Hive表同名)代表一个Hive表,最终这些目录里文件file对应的是表中的数据。
HIVE 没有专门的存储格式,我们可以自由指定分隔符,默认的是制表符'\t',这种格式的作用主要是在文件中能表现出来。
二、HIVE 的存储结构:
⬜️ 内部表:
⬜️ 分区表:
⬜️ 外部表:
⬜️ 桶表:
⬜️ 视图:
HIVE 的数据导入
一、LOAD 方式导入
二、Sqoop 数据导入
HIVE 的函数操作
一、内置函数
二、自定义函数
HIVE 数据查询
一、基本查询
二、子查询
三、连接查询
参考资料
。。。待续
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于