使用哨兵配置配置单元:NullPointerException privilegeObj 为空
Config hive with sentry: NullPointerException privilegeObj is null for
我已经按照 the guide 一步一步来了。但是当我尝试向角色授予权限时发生错误:
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)
我是beeline as hive登录的,密码正确,创建角色ok,可以看到角色:
0: jdbc:hive2://localhost:10000/> show roles;
+-------------+--+
| role |
+-------------+--+
| test |
| admin_role |
+-------------+--+
但我无法获得当前角色:
0: jdbc:hive2://localhost:10000/> show current roles;
+-------+--+
| role |
+-------+--+
+-------+--+
此查询列出了分配给已登录用户组的所有角色:
SHOW CURRENT ROLES;
我猜,在你的情况下,用户配置单元属于组配置单元(组在 hdfs 权限的含义)。您可以查看组 hive 被授予了哪些角色:
SHOW ROLE GRANT GROUP hive;
如果您没有看到admin_role,您可以通过以下语句授予它:
GRANT ROLE admin_role TO GROUP hive;
找到原因:
hive-exec.jar 的 sentry 和 hive 来自不同的版本。常量,例如:TOK_PRIV_OBJECT
,在两个jar中有不同的值。
真的很棘手!
我已经按照 the guide 一步一步来了。但是当我尝试向角色授予权限时发生错误:
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)
我是beeline as hive登录的,密码正确,创建角色ok,可以看到角色:
0: jdbc:hive2://localhost:10000/> show roles;
+-------------+--+
| role |
+-------------+--+
| test |
| admin_role |
+-------------+--+
但我无法获得当前角色:
0: jdbc:hive2://localhost:10000/> show current roles;
+-------+--+
| role |
+-------+--+
+-------+--+
此查询列出了分配给已登录用户组的所有角色:
SHOW CURRENT ROLES;
我猜,在你的情况下,用户配置单元属于组配置单元(组在 hdfs 权限的含义)。您可以查看组 hive 被授予了哪些角色:
SHOW ROLE GRANT GROUP hive;
如果您没有看到admin_role,您可以通过以下语句授予它:
GRANT ROLE admin_role TO GROUP hive;
找到原因:
hive-exec.jar 的 sentry 和 hive 来自不同的版本。常量,例如:TOK_PRIV_OBJECT
,在两个jar中有不同的值。
真的很棘手!