本文的安装版本为Hive 3.1.2,且安装为单节点。
1. 安装参考及注意事项
(1) 官网:http://hive.apache.org/
(2) 上篇博客:Hadoop 3.1.3伪分布式环境安装Hive 3.1.2的异常总结
2. 常见属性配置
(1) Hive数据仓库位置
1) default数据仓库原始位置在hdfs上,默认路径为/user/hive/warehouse
2) 在仓库目录下,没有对默认的数据库default创建文件夹。如果某张表属于default数据库,直接在数据仓库目录下创建一个文件夹
3) 修改default数据仓库原始位置(将hive-default.xml.template如下配置信息拷贝到hive-site.xml文件中)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>location of default database for the warehouse</description> </property>
(2) 查询后常用信息显示配置
1) 在hive-site.xml文件中添加如下配置信息,就可以实现显示当前数据库,以及查询表的头信息配置
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<!-- 显示表的列名 --> <property> <name>hive.cli.print.header</name> <value>true</value> </property> <!-- 显示数据库名称 --> <property> <name>hive.cli.print.current.db</name> <value>true</value> </property>
(3) 参数配置方式
1) 查看当前配置: set;
2) 参数配置三种方式
a. 默认配置文件: hive-default.xml,用户自定义文件:hive-site.xml
注意:用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。配置文件的设定对本机启动的所有Hive进程都有效
b. 命令行参数方式
启动hive时,可以通过--hiveconf <property=value>方式进行配置,注意仅对本次hive启动有效。例如:
hive -hiveconf mapred.reduce.tasks=10;
查看参数设置:set mapred.reduce.tasks;
c. 参数声明方式
可以在HQL中使用SET关键字设定参数:hive> set mapred.reduce.tasks=100;
上述三种设定方式的优先级依次递增。即配置文件<命令行参数<参数声明。注意某些系统级的参数,例如log4j相关的设定,必须用前两种方式设定,因为那些参数的读取在会话建立以前已经完成了
3. 简单使用
(1) 启动hive: 配置环境变量后,直接运行hive即可
(2) 查看当前数据库: show databases;
(3) 打开默认数据库: user default;
(4) 创建一张表: create table test(id int, name string);
(5) 显示数据库中有几张表: show tables;
(6) 查看简要表结构: desc student;
(7) 查看详细表结构: desc formatted student;
(8) 向表中插入数据: insert into student values(1,'ws');
(9) 查询表中数据: select * from student;
(10) 退出: quit;或exit;
4. 本地文件导入Hive
(1) 本地数据文件student.txt,内容如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1001 ss1 1002 ss2 1003 ss3 1004 ss4 1005 ss5 1006 ss6 1007 ss7 1008 ss8
(2) 创建数据表,且文件分隔符为'\t':
create table if not exists student(id int, name string) row format delimited fields terminated by '\t';
(3) 加载本地
load data local inpath '/home/ws/module/hive/data/student.txt' into table student;
(4) 查询结果:
select * from student;