config-hive-with-sentry:nullpointerexception privilegobj为空

enxuqcxy  于 2021-06-28  发布在  Hive
关注(0)|答案(2)|浏览(451)

我已经一步一步地跟着导游走了。但尝试授予角色权限时出错:

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,密码正确,create role正常,我可以看到角色:

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

但我无法获得当前角色:

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

js4nwp541#

找到原因:
哨兵的hive-exec.jar和Hive有不同的版本。常数,例如: TOK_PRIV_OBJECT ,在两个jar中有不同的值。
真狡猾!

yzxexxkh

yzxexxkh2#

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

SHOW CURRENT ROLES;

我猜,在您的例子中,用户hive属于组hive(hdfs中的组)。您可以检查哪些角色被授予组配置单元:

SHOW ROLE GRANT GROUP hive;

如果您没有看到admin\u角色,可以使用以下语句授予它:

GRANT ROLE admin_role TO GROUP hive;

相关问题