最近我启用了Hive的Sentry策略文件。所以,当我尝试执行使用黑斑羚,JDBC4在因帕拉查询(2.5.16版本)我得到这个错误:Impala JDBC错误:用户'没有执行'SELECT'的权限:表
errorMessage:AuthorizationException: User '' does not have privileges to execute 'SELECT' on: db.table
在我的代码设置我的管理员帐户我的数据库中的用户名和密码。所以我不明白为什么它不读取。
public static double getDolarFromImpala(String date) {
double dolar = 0.0;
try {
Class.forName(JDBC_DRIVER_IMPALA);
String sql = "SELECT value FROM db.table where date ='"+date+"'";
String JDBC_IMPALA_URL = "jdbc:impala://impala1:21050;auth=noSasl;UseNativeQuery=1";
Connection con = DriverManager.getConnection(JDBC_IMPALA_URL,IMPALA_USER,IMPALA_PASSWORD);
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
dolar = rs.getDouble("value");
}
stmt.close();
con.close();
}
catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}
catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}
return dolar;
}
我做错了什么?
如果政策文件中的黑斑羚活动时不起作用。我已经拥有一个拥有执行该查询权限的用户('IMPALA_USER')和密码('IMPALA_PASSWORD')。事情是,当我写'IMPALA_USER'错误不显示'用户'IMPALA_USER'没有特权',而是用户是空的。就像JDBC不会使用我设置的用户运行查询。 –
您是否尝试过在JDBC连接字符串中传递用户名和密码以及正确的身份验证机制,如与JDBC驱动程序捆绑在一起的Cloudera Impala JDBC驱动程序安装PDF文档中所述?尝试这样:'jdbc:impala:// impala1:21050; authMech = 3; UID = IMPALA_USER; PWD = IMPALA_PASSWORD; UseSasl = 0; UseNativeQuery = 1' –
使用该连接的URL –