hive里的扩展接口,主要包括CLI(控制命令行接口)、Beeline和JDBC等方式访问Hive。
CLI和Beeline都是交互式用户接口,并且功能相似,但是语法和实现不同。
JDBC是一种类似于编程访问关系型数据库的编程接口。
1、CLI
在UNIX shell环境下输入hive命令可以启用Hive CLI。在CLI下,所有的Hive语句都以分号结束。
在CLI下可以对一些属性做出设置,像是设置底层MapReduce任务中Reducer的实例数。这些信息都详细地记录在在线Hive语言手册中。
下面是一些专门针对Hive,并且对使用Hive CLI非常有帮助的属性:
hive.cli.print.header:当设置为true时,查询返回结果的同时会打印列名。默认情况下设置为false。因此不会打印。
想要开启列名打印的功能需要输入以下指令。
hive > set hive.cli.print.header=true;
hive.cli.print.current.db:当设置为true时,将打印当前数据库的名字。默认情况下设置为false。
可以通过输入以下指令修改属性:
hive > set hive.cli.print.current.db=true;
hive (default) >
2、Beeline
Beeline可以作为标准命令行接口的替代者。它使用JDBC连接Hive,而且基于开源的SQLLine项目。
Beeline的工作方式和Hive CLI很像,但是使用Beeline需要与Hive建立显示的连接:
$ beeline
Beeline version 0.11.0 by Apache Hive
beeline > !connect jdbc:hive:// nouser nopassword
本地模式中使用的JDBC的URL是jdbc:hive//。如果是集群中的配置,那么JDBC的URL通常是这样的形式:dbc:hive//<hostname>:<port>。
<hostname>是Hive服务器的主机名,<port>是预先配置的端口号(默认为10000)。
这样的情况下,我吗可以使用Beeline执行任何Hive语句,与使用CLI一样。
3、JDBC
Java客户端可以使用预先提供的JDBC驱动来连接Hive。连接步骤和其他兼容JDBC的数据库一样。首先载入驱动,然后建立连接。
JDBC驱动的类名是org.apache.hadoop.hive.jdbc.HiveDriver。
本地模式中使用的JDBC的URL是jdbc:hive://。
如果是集群中的配置,那么JDBC的URL通常是这样的形式:jdbc:hive//<hostname>:<port>。
<hostname>是Hive服务器的主机名,<port>是预先配置的端口号(默认为10000)。
给一个例子,展示使用JDBC连接本地模式的Hive,并提交查询请求: