首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Impala JDBC错误:用户'‘没有在: table上执行'SELECT’的权限

Impala JDBC错误:用户'‘没有在: table上执行'SELECT’的权限
EN

Stack Overflow用户
提问于 2016-12-16 22:39:08
回答 1查看 5.1K关注 0票数 0

最近,我为配置单元启用了Sentry策略文件。因此,当我尝试使用Impala-JDBC4 (2.5.16版)在Impala中执行查询时,我得到以下错误:

代码语言:javascript
运行
复制
errorMessage:AuthorizationException: User '' does not have privileges to execute 'SELECT' on: db.table

在我的代码中,我设置了我的数据库管理员帐户的用户和密码。所以我不明白为什么它不读这个。

代码语言:javascript
运行
复制
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;
}

我做错什么了?

EN

回答 1

Stack Overflow用户

发布于 2016-12-17 04:18:01

出现此错误是因为您用来运行代码的用户对您在impala中使用的数据库没有权限。要启用此功能,请执行以下命令。

注意:所有这些命令都应该从IMPALA超级用户执行

首先,您必须为您的作业创建一个角色,然后,您必须将该特定角色授予您正在使用的用户GRANT ROLE role_name TO GROUP user_name (我使用的是functional CREATE ROLE role_name;,您也可以指定用户而不是组)。最后一步是授予该特定角色GRANT ALL ON database database_name TO ROLE role_name;对数据库的权限

在此步骤之后,尝试从您授予角色的用户运行代码。

欲了解更多信息,请访问以下链接:https://www.cloudera.com/documentation/enterprise/5-5-x/topics/sg_hive_sql.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41186735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档