Hive(5) hive的交互方式
Hive的交互方式
-
Hive的交互方式主要有三种
-
使用
Hive
之前:-
先启动hadoop集群:因为
hql
语句会被编译成MR
任务提交到集群运行;hive
表数据一般存储在HDFS
上 -
mysql服务:因为对
hive
操作过程中,需要访问mysql
中存储元数据的库及表
-
Hive交互shell(过时了)
- 在任意路径运行
hive
[hadoop@node03 ~]$ hive
Hive JDBC服务(企业中使用)
第一步:启动hiveserver2服务
Hive
的hiveserver2
服务本质上是实现了JDBC
的接口,所以我们可以以各种方式使用JDBC
连接它,在终端可以使用beeline
,连接Hive
的server
,用法和hive shell
一致。
有两种方式启动hiveserver2
服务:前台启动与后台启动方式二选一,前台启动会有输出到控制台,后台启动不会有输出到控制台。
- 前台启动
[hadoop@node03 ~]$ hive --service hiveserver2
- 后台启动(推荐使用)
[hadoop@node03 ~]$ nohup hive --service hiveserver2 &
#或者
[hadoop@node03 ~]$ nohup hive --service hiveserver2 2>&1
第二步:beeline连接hiveserver2服务
若是前台启动hiveserver2
,请再开启一个新会话窗口,然后使用beeline
连接hiveserver2
。hiveserver2
的服务端口默认是10000
[hadoop@node03 ~]$ beeline
beeline> !connect jdbc:hive2://node03:10000
hive
用户名写hadoop
即可,关键是这个用户要有对hdfs
操作的权限,密码为空即可。
查看帮助信息
0: jdbc:hive2://node03:10000> help
退出
使用!quit
进行退出。
0: jdbc:hive2://node03:10000> !quit
Closing: 0: jdbc:hive2://node03:10000
[hadoop@node03 ~]$
关闭hiveserver2
# jps查看hiveserver2进程号
kill -9 进程号
Hive的命令(不需要进入hive shell)
第一种方式:hive -e hql语句
使用 –e
参数来直接执行hql
语句
[hadoop@node03 ~]$ hive -e "show databases"
第二种方式:hive -f sql文件
使用 –f
参数执行包含hql
语句的文件
node03
执行以下命令准备hive
执行脚本
[hadoop@node03 ~]$ vim hive.sql
文件内容如下
create database if not exists myhive;
通过以下命令来执行我们的hive
脚本
[hadoop@node03 ~]$ hive -f hive.sql
查看效果,成功执行hql
语句,创建myhive
数据库
查看创建的数据库存放到hdfs的位置
登录到node03
的mysql
,查看元数据,从而获知我们创建的数据库放到hdfs
哪里了。
登录
mysql
的时候使用root
用户,密码为123456
。为什么使用
root
用户?因为我们安装hive
的时候,在配置文件里面已经指定是root
用户了。<property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property>
如果没有
root
用户的权限怎么办?能不能换个mysql
用户登录?答案是可以的,解决方法如下,首先使用
mysql
的root
用户登录mysql
,然后添加一个普通用户,比如说,用户名为jimmy
,密码为123456
,最后修改hive
的配置文件内容:<property> <name>javax.jdo.option.ConnectionUserName</name> <value>jimmy</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property>
最后,还要给普通用户
jimmy
配置一些权限:grant all privileges on hive.* to 'jimmy'@'%' identified by '123456' with grant option; flush privileges;
查看元数据方式:
- 选择使用里面的
hive
数据库:use hive;
- 查看
hive
数据库里面的DBS
表:select * from DBS;
- 查看元数据信息,可看到:
hdfs://node01:8020/user/hive/warehouse/myhive.db
就是我们创建的数据库在hdfs
中的位置,而且创建用户显示是hadoop
。 - 数据库在
HDFS
上的默认存储路径是/user/hive/warehouse/数据库名.db
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hive |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use hive
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_hive |
+---------------------------+
| BUCKETING_COLS |
| CDS |
| COLUMNS_V2 |
| DATABASE_PARAMS |
| DBS |
| FUNCS |
| FUNC_RU |
| GLOBAL_PRIVS |
| PARTITIONS |
| PARTITION_KEYS |
| PARTITION_KEY_VALS |
| PARTITION_PARAMS |
| PART_COL_STATS |
| ROLES |
| SDS |
| SD_PARAMS |
| SEQUENCE_TABLE |
| SERDES |
| SERDE_PARAMS |
| SKEWED_COL_NAMES |
| SKEWED_COL_VALUE_LOC_MAP |
| SKEWED_STRING_LIST |
| SKEWED_STRING_LIST_VALUES |
| SKEWED_VALUES |
| SORT_COLS |
| TABLE_PARAMS |
| TAB_COL_STATS |
| TBLS |
| VERSION |
+---------------------------+
29 rows in set (0.00 sec)
mysql> select * from DBS;
+-------+-----------------------+--------------------------------------------------+---------+------------+------------+
| DB_ID | DESC | DB_LOCATION_URI | NAME | OWNER_NAME | OWNER_TYPE |
+-------+-----------------------+--------------------------------------------------+---------+------------+------------+
| 1 | Default Hive database | hdfs://node01:8020/user/hive/warehouse | default | public | ROLE |
| 6 | NULL | hdfs://node01:8020/user/hive/warehouse/myhive.db | myhive | hadoop | USER |
+-------+-----------------------+--------------------------------------------------+---------+------------+------------+
2 rows in set (0.00 sec)
[hadoop@node01 ~]$ hdfs dfs -ls /user/hive/warehouse/
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2020-02-22 11:56 /user/hive/warehouse/myhive.db