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 常用交互命令

hadoop进入目录命令 hadoop进入hive命令_mysql


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