0

我一步一步地按照指南进行操作。但是当我尝试向角色授予权限时发生错误:

0: jdbc:hive2://localhost:10000/> GRANT ALL ON SERVER server1 TO ROLE admin_role;
Error: Error while compiling statement: FAILED: NullPointerException privilegeObj is null for 
TOK_GRANT
   TOK_PRIVILEGE_LIST
      TOK_PRIVILEGE
         TOK_PRIV_ALL
   TOK_PRINCIPAL_NAME
      TOK_ROLE
         admin_role
   TOK_PRIV_OBJECT
      TOK_SERVER_TYPE
         server1 (state=42000,code=40000)

我用hive登录beeline,密码正确,创建角色没问题,可以看到角色了:</p>

0: jdbc:hive2://localhost:10000/> show roles;
+-------------+--+
|    role     |
+-------------+--+
| test        |
| admin_role  |
+-------------+--+

但我无法获得当前角色:

0: jdbc:hive2://localhost:10000/> show current roles;
+-------+--+
| role  |
+-------+--+
+-------+--+
4

2 回答 2

0

此查询列出了分配给已登录用户组的所有角色:

SHOW CURRENT ROLES;

我想,在您的情况下,用户配置单元属于组配置单元(组在 hdfs 权限的含义)。您可以检查哪些角色被授予组配置单元:

SHOW ROLE GRANT GROUP hive;

如果您没有看到 admin_role,您可以使用以下语句授予它:

GRANT ROLE admin_role TO GROUP hive;
于 2016-09-16T07:05:22.563 回答
0

找到原因:

sentry 和 hive 的 hive-exec.jar 来自不同的版本。TOK_PRIV_OBJECT两个 jar 中的常量,例如 :具有不同的值。

真的很棘手!

于 2017-01-19T09:30:26.583 回答