Hive(5) hive的交互方式

Hive的交互方式

  • Hive的交互方式主要有三种

  • 使用Hive之前:

    • 先启动hadoop集群:因为hql语句会被编译成MR任务提交到集群运行;hive表数据一般存储在HDFS

    • mysql服务:因为对hive操作过程中,需要访问mysql中存储元数据的库及表

Hive交互shell(过时了)

  • 在任意路径运行hive
[hadoop@node03 ~]$ hive

Hive JDBC服务(企业中使用)

第一步:启动hiveserver2服务

Hivehiveserver2服务本质上是实现了JDBC的接口,所以我们可以以各种方式使用JDBC连接它,在终端可以使用beeline,连接Hiveserver用法和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连接hiveserver2hiveserver2的服务端口默认是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数据库

image-20200222041116597

查看创建的数据库存放到hdfs的位置

登录到node03mysql,查看元数据,从而获知我们创建的数据库放到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用户登录?

答案是可以的,解决方法如下,首先使用mysqlroot用户登录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;

查看元数据方式:

  1. 选择使用里面的hive数据库:use hive;
  2. 查看hive数据库里面的DBS表:select * from DBS;
  3. 查看元数据信息,可看到:hdfs://node01:8020/user/hive/warehouse/myhive.db就是我们创建的数据库在hdfs中的位置,而且创建用户显示是hadoop
  4. 数据库在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

posted @ 2020-08-23 23:52  Whatever_It_Takes  阅读(366)  评论(0编辑  收藏  举报