我们的团队刚刚升级到HiveServer2(在MapR上),具有安全性。我可以通过beeline登录数据库并执行select语句:
beeline> !connect jdbc:hive2://
Enter username for djbc:hive2://: <username>
Enter password for jdbc:hive2://: **********
beeline> use test;
beeline> select * from foo;
我正在使用Talend(一个java代码生成器)尝试连接到HiverServer2,但是我收到以下错误消息:
Exception in component tHiveConnection_3
java.sql.SQLException: Error while compiling statement: FAILED: SemanticException No valid privileges
Required privileges for this query: Server=HS2->Db=test->Table=*->action=insert;Server=HS2->Db=test->Table=*->action=select;
at org.apache.hive.jdbc.Utils.verifySuccess(Utils.java:121)
at org.apache.hive.jdbc.Utils.verifySuccessWithInfo(Utils.java:109)
at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:233)
at org.apache.hive.jdbc.HiveConnection.configureConnection(HiveConnection.java:451)
at org.apache.hive.jdbc.HiveConnection.<init>(HiveConnection.java:195)
at org.apache.hive.jdbc.HiveDriver.connect(HiveDriver.java:105)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at talend56test.testhiveryan2_0_1.TestHiveRyan2.tHiveConnection_3Process(TestHiveRyan2.java:2493)
我发现它有点令人困惑,因为我可以使用与Talend相同的用户名/密码/数据库登录beeline,但Talend会抛出特权错误。
查看第2492行(tHiveConnection_3)的Talend生成代码,我可以看到以下java代码导致错误:
conn_tHiveConnection_3 = java.sql.DriverManager.getConnection(
url_tHiveConnection_3, dbUser_tHiveConnection_3,
dbPwd_tHiveConnection_3);
url_tHiveConnection_3是一个字符串,其值如下:"jdbc:hive2://myhost:10000/test
;
dbUser_tHiveConnection_3是一个包含我的用户名的字符串。
dbPwd_tHiveConnection_3是一个包含我的密码的字符串
有关导致此错误的原因的任何想法?