1、基础操作
(1)启动 hive
[hadoop@master ~]$ bin/hive
(2)查看数据库
hive>show databases;
(3)打开默认数据库
hive>use default;
(4)显示 default 数据库中的表
hive>show tables;
(5)创建一张表
hive> create table student(id int, name string) ;
(6)显示数据库中有几张表
hive>show tables;
(7)查看表的结构
hive>desc student;
(8)向表中插入数据
hive> insert into student values(1000,“ss”);
(9)查询表中数据
hive> select * from student;
(10)退出 hive
hive> quit;
2、将本地文件导入 Hive 案例
需求:将本地student.txt 这个目录下的数据导入到 hive 的 student(id int, name string)表中。
1)数据准备:在/opt/module/datas/student.txt 这个目录下准备数据
(1)在/opt/module/目录下创建 datas
[hadoop@master ~]$ mkdir datas
(2)在/opt/module/datas/目录下创建 student.txt 文件并添加数据
[hadoop@master ~]$ touch student.txt
[hadoop@master ~]$ vi student.txt
1001 zhangshan
1002 lishi
1003 zhaoliu
注意以 tab 键间隔。
2)Hive 实际操作
(1)启动 hive
[hadoop@master ~]$ bin/hive
(2)显示数据库
hive>show databases;
(3)使用 default 数据库
hive>use default;
(4)显示 default 数据库中的表
hive>show tables;
(5)删除已创建的 student 表
hive> drop table student;
(6)创建 student 表, 并声明文件分隔符’\t’
hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’;
(7)加载/opt/module/datas/student.txt 文件到 student 数据库表中。
hive> load data local inpath ‘/opt/module/datas/student.txt’ into table student;
(8)Hive 查询结果
hive> select * from student;
OK
1001 zhangshan
1002 lishi
1003 zhaoliu
Time taken: 0.266 seconds, Fetched: 3 row(s)
3)遇到的问题
再打开一个客户端窗口启动 hive,会产生 java.sql.SQLException 异常。原因是,Metastore 默认存储在自带的 derby 数据库中,而derby数据库不应许同时开启两个客户端窗口启动hive,所以推荐使用 MySQL 存储 Metastore。
安装 MySql 服务器
1)安装 mysql 服务端
apt-get install mysql-server
3)查看 mysql 状态
[hadoop@master ~]# /etc/init.d/mysql status
4)启动 mysql
[root@master ~]# /etc/init.d/mysql start
MySql 中 user 表中主机配置
配置只要是 root 用户+密码,在任何主机上都能登录 MySQL 数据库。
1)进入 mysql
[root@master ~]# mysql -uroot -p000000
2)显示数据库
mysql>show databases;
3)使用 mysql 数据库
mysql>use mysql;
4)展示 mysql 数据库中的所有表
mysql>show tables;
5)展示 user 表的结构
mysql>desc user;
6)查询 user 表
mysql>select User, Host, Password from user;
7)修改 user 表,把 Host 表内容修改为%
mysql>update user set host=’%’ where host=‘localhost’;
8)删除 root 用户的其他 host
mysql>delete from user where Host='master ';
mysql>delete from user where Host=‘127.0.0.1’;
mysql>delete from user where Host=’::1’;
9)刷新
mysql>flush privileges;
10)退出
mysql> quit;
Hive 元数据配置到 MySql
详情请见我的另一篇博文:hadoop Hive-2.3.4 安装配置
3、Hive 常用交互命令
1)“-e”:不进入 hive 的交互窗口执行 sql 语句
[hadoop@master hive]$ bin/hive -e "select id from student;"
2)“-f”:执行脚本中 sql 语句
(1)在/opt/module/datas 目录下创建 hivef.sql 文件
[hadoop@master datas]$ touch hivef.sql
文件中写入正确的 sql 语句:select * from student;
(2)执行文件中的 sql 语句
[hadoop@master hive]$ bin/hive -f /opt/module/datas/hivef.sql
(3)执行文件中的 sql 语句并将结果写入文件中
[hadoop@master hive]$ bin/hive -f /opt/module/datas/hivef.sql > /opt/module/datas/hive_result.txt
4、Hive 其他命令操作
1)退出 hive 窗口:
hive(default)>exit;
hive(default)>quit;
在新版的 oracle 中没区别了,在以前的版本是有的:
exit:先隐性提交数据,再退出;
quit:不提交数据,退出;
2)在 hive cli 命令窗口中如何查看 hdfs 文件系统
hive(default)>dfs -ls /;
3)在 hive cli 命令窗口中如何查看 hdfs 本地系统
hive(default)>! ls /opt/module/datas;
4)查看在 hive 中输入的所有历史命令
(1)进入到当前用户的根目录/root 或/home/atguigu
(2)查看. hivehistory 文件
[hadoop@master ~]$ cat .hivehistory