Hive的JDBC客户端Beeline CLI简介

                         Beeline CLI的使用

Beeline CLI是Hive中的一个JDBC客户端,它可以替代Hive默认的CLI(Hive命令行模式),但与CLI不同的是,Beeline CLI需要与HiveServer2服务一起使用。下面我们讲解如何在远程模式下使用Beeline CLI。

 修改用户的权限

使用Beeline CLI连接Hive,需要在Hadoop中为Hive开通代理用户访问权限。在centoshadoop1节点中修改Hadoop配置文件core-site.xml,添加以下配置内容。

<property>

<name>hadoop.proxyuser.hadoop.hosts</name>

<value>*</value>

</property>

<property>

<name>hadoop.proxyuser.hadoop.groups</name>

<value>*</value>

</property>

需要注意的是,修改完后将core-site.xml同步到Hadoop集群的其他节点。

必须要重新启动hadoop集群,否则该配置不生效 :

sbin/stop-all.sh  sbin/start-all.sh

上述配置的属性中,hadoop.proxyuser是固定的写法,后面跟的是Hadoop集群的代理用户名,本例使用的用户名是”hadoop”。hosts属性配置为”*”,代表任意节点可以使用Hadoop集群的代理用户”hadoop”访问HDFS集群。groups属性配置为”*”,代表所有组。

进过以上配置后,就可以使用”hadoop”用户在Beeline CLI中连接Hive了。

启动HiveServer2

在centoshadoop1节点中执行以下命令,启动HiveServer2服务。

hive --service hiveserver2 &

当HiveServer2服务启动以后,就可以通过访问默认端口10002查看HiveServer2的Web UI。浏览器访问地址:http://centoshadoop1:10002即可出现如下界面,该界面中显示了当前连接的会话,包括IP,用户名,当前执行的操作数量,会话连接总时长。如果有会话执行查询,则下方的Open Queries处会显示执行的查询语句,执行耗时等。

firewall-cmd --zone=public --add-port=10002/tcp --permanent

firewall-cmd --reload

                        Hive的JDBC客户端Beeline CLI简介

 

当然,也可以通过修改Hive配置文件hive-site.xml,在其中加入以下内容,对Web UI的端口等信息进行配置。修改完需要重启HiveServer2服务使其生效.

<!-- 配置Hive Web UI-->

<property>

<name>hive.server2.webui.host</name>

<value>0.0.0.0</value>

</property>

<property>

<name>hive.server2.webui.port</name>

<value>10002</value>

</property>

 

启动Beeline CLI

在节点centoshadoop2中进入Hive安装目录执行(也可以在服务器节点执行),以下命令启动Beeline CLI:

bin/beeline

连接HiveServer2服务

在Beeline CLI中连接HiveServer2服务,输入的命令如下:

 

 

beeline> !connect jdbc:hive2://centoshadoop1:10000

Connecting to jdbc:hive2://centoshadoop1:10000

Enter username for jdbc:hive2://centoshadoop1:10000: hadoop

Enter password for jdbc:hive2://centoshadoop1:10000: ***********

Connected to: Apache Hive (version 2.3.6)

Driver: Hive JDBC (version 2.3.6)

此处输入的用户名为hadoop的执行用户名及密码

连接成功的提示符为:

0: jdbc:hive2://centoshadoop1:10000>

此外,在启动Beeline CLI时也可以执行以下命令直接连接到HiveServer2服务:

bin/beeline -u jdbc:hive2://centoshadoop1:10000 -n hadoop

0: jdbc:hive2://centoshadoop1:10000> show databases;

+----------------+

| database_name  |

+----------------+

| default        |

+----------------+

查询student表中的数据

0: jdbc:hive2://centoshadoop1:10000> select * from student

. . . . . . . . . . . . . . . . . .> ;

+-------------+---------------+

| student.id  | student.name  |

+-------------+---------------+

| 1201        | zhangsan      |

| 1321        | yanghong      |

| 12          | laogao000     |

 

由于Beeline是一个基于SQLLine的JDBC客户端,因此SQLLine的常用命令在Beeline中也同样适用。关于SQLLine的常用命令可以在http://sqlline.sourceforge.net/中查看,

Beeline CLI的查询命令与Hive CLI一样,都是正常的SQL输入。但是一些管理命令,例如:连接,关闭,退出,需要在命令前添加感叹号!,且不需要结束符.

在Beeline CLI中执行”!help”命令可以输出常用的以感叹号开头的特殊命令。如下

命令

说明

!tables

列出数据库中的所有的表

!list

列出当前所有连接

!help

显示所有命令列表

!quit

退出beeline

!close

关闭与当前数据库的连接

!dropall

删除当前数据库中的所有表

!closeall

关闭所有打开的连接

!columns

列出指定表的所有列

!history

显示命名执行历史

!reconnect

重新连接

!scan

扫描已安装的JDBC驱动程序

!addlocaldriverjar

在Beeline客户端添加驱动程序jar文件

!addlocaldrivername

添加在beeline中需要支持的驱动程序名称

!all

对所有当前连接执行指定的SQL

!autocommit

设置打开或关闭自动提交模式

!batch

执行批量语句

!commit

提交当前事务(如果自动提交被关闭)

!connect

连接到指定HiveServer2服务

!describe

显示一张表的描述信息

!indexs

列出指定表的所有索引

!outputformat

设置显示结果的输出格式,可选的格式有:table,vertical,csv2,dsv,tsv2,xmlattrs,xmlelements

!record

将所有输出记录到指定的文件中

!rollback

回滚当前事务(如果自动提交被关闭)

!run

从指定的文件运行脚本

!script

开始将脚本保存到文件中

!set

设置一个beeline变量

!sh

执行一个Shell命令

!sql

执行一个SQL命令