Hive CLI是一种重客户端,在新版本中已移除,推荐使用Hive beeline客户端,可以更好地实现安全控制,下面讲讲beeline的使用。
在hive1.1.0中使用Hive CLI会提示WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
无kerberos的hive
beeline
!connect jdbc:hive2://centos:10000 username password
对于没有开启kerberos认证的集群,可以输入任意的username和password。也可以敲Enter键表示空。其中centos是我的hiveserver2的主机名,用户需要修改成自己的hiveserver2名。比如我使用了任意的用户名和密码jwldata,如下图所示,成功连接到了hiveserver2
可以使用非交互式连接hive,适用于程序脚本连接。
beeline -u 'jdbc:hive2://centos:10000'
带kerberos的hive
使用kerberos认证
开启了kerberos认证的hadoop集群,hive默认使用kerberos认证。
比如user1用户先进行kerberos认证。
kinit -kt /path/to/user1.keytab user1
然后使用非交互式连接hive,增加principal=hive/_HOST@CENTOS,其中CENTOS是我的Kerberos KDC名字,用户需要修改成自己的KDC名。
beeline -u 'jdbc:hive2://centos:10000/default;principal=hive/_HOST@CENTOS'
使用LDAP认证
如果Hive另外配置集成了LDAP认证,那么也可以使用LDAP的用户名和密码进行身份认证。
beeline
!connect jdbc:hive2://centos:10000
根据提示输入LDAP用户名和密码
或者直接在url连接串中传入LDAP用户和密码
beeline
!connect jdbc:hive2://centos:10000 <ldap-username> <ldap-password>
也可以使用非交互式连接hive,适用于程序脚本连接。
beeline -u 'jdbc:hive2://centos:10000/default <ldap-username> <ldap-password>'
更多例子
传入查询语句
在beeline中直接运行sql语句
beeline -u 'jdbc:hive2://centos:10000/bank;principal=hive/_HOST@CENTOS' --silent=true --outputformat=tsv2 --showHeader=false -e "show tables"
beeline -u 'jdbc:hive2://centos:10000/default;principal=hive/_HOST@CENTOS' --silent=true --outputformat=tsv2 --showHeader=false -e "select * from bank.account"
传入查询文件
对于SQL语句比较长的,可以考虑写在文本文件里,传入beeline中执行,更加方便。
比如我把一个sql语句写在sql.txt中。
select name, sum(cash) from bank.account group by name;
执行以下beeline语句,可以执行sql.txt文件中的SQL语句。
beeline -u 'jdbc:hive2://centos:10000/default;principal=hive/_HOST@CENTOS' --silent=true --outputformat=tsv2 --showHeader=false -f sql.txt