Impala JDBC bug

此文仅仅适合开启了简单认证权限的impala,也就是使用sentry+OS用户组来简单控制impala访问控制权限。

impala JDBC有2种访问方式,一种是使用hive2 jdbc访问, 一种使用impala 自己的JDBC访问。

参阅官方文档了解详情: https://www.cloudera.com/documentation/enterprise/latest/topics/impala_jdbc.html

代码如下:

public class App 
{
    public static void main( String[] args ) throws ClassNotFoundException, SQLException
    {
        String driver = "com.cloudera.impala.jdbc41.Driver";
    	//String driver = "com.cloudera.hive.jdbc41.HS2Driver";
        //String url = "jdbc:impala://10.40.2.103:21050/default;UseSasl=0;AuthMech=3;UID=impala;PWD=";
        String url = "jdbc:impala://10.40.2.103:21050/default;";
        String username = "hive";
        String password = "hive";
    	Connection connection = null;
        Class.forName(driver);
        connection = DriverManager.getConnection(url,username,password);
        String sql = "select count(*) from dmk.dmk_po_analysis_detail";
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(sql);
        while(resultSet.next()) {
        	System.out.println(resultSet.getInt(1));
        }
        resultSet.close();
        statement.close();
        connection.close();
    }
}

上面代码没使用使用任何认证信息,报错如下:

Exception in thread "main" java.sql.SQLException: [Cloudera][ImpalaJDBCDriver](500051) ERROR processing query/statement. Error Code: 0, SQL state: TStatus(statusCode:ERROR_STATUS, sqlState:HY000, errorMessage:AuthorizationException: User '' does not have privileges to execute 'SELECT' on: dmk.dmk_po_analysis_detail

上面是正常的,现在我们按照官方文档的介绍impala权限认证需要配置以下3个参数:

AuthMech 0,1,2,3(0不使用认证,1使用安全认证,2使用用户但是不用密码,3 LDAP认证使用用户密码)结合UID, PWD。

现在我们修改URL:

String url = "jdbc:impala://10.40.2.103:21050/default;AuthMech=2;UID=impala";

报错信息如下:

Exception in thread "main" java.sql.SQLException: [Cloudera][ImpalaJDBCDriver](500176) Error connecting to HiveServer2, please verify connection settings. 

参考了官方论坛及查询其他人碰到这种问题,有一种临时解决方案,修改URL如下:

jdbc:impala://10.40.2.103:21050/default;UseSasl=0;AuthMech=3;UID=impala;PWD=

AuthMech=3,UID=impala(有权限的用户都可以), PWD=   不要设置密码

或者:

String url = "jdbc:impala://10.40.2.103:21050/default;UseSasl=0;AuthMech=3;UID=impala";

这个BUG已经很久了,目前仍然没有修复。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tom_fans

谢谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值