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配置文件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命令 |