Улей конфигурации с sentry: NullPointerException privilegeObj имеет значение null для

Я следовал за руководством шаг за шагом. Но произошла ошибка, когда я попытался предоставить привилегию роли:

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)

Я вхожу в билайн как улей и пароль верный, создание роли в порядке, и я могу видеть роли:

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

но я не могу получить текущие роли:

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

2 ответа

Решение

Нашел причину:

hive-exec.jar из sentry и hive поставляется с разными версиями. Константы, такие как:TOK_PRIV_OBJECTв двух банках имеет разные значения.

Действительно сложно!

В этом запросе перечислены все роли, назначенные зарегистрированным группам пользователей:

SHOW CURRENT ROLES;

Я предполагаю, что, в вашем случае, пользовательский куст принадлежит к группе кустов (группа в значении hdfs permissions). Вы можете проверить, какие роли предоставлены групповому кусту:

SHOW ROLE GRANT GROUP hive;

Если вы не видите admin_role, вы можете предоставить его с помощью этого утверждения:

GRANT ROLE admin_role TO GROUP hive;
Другие вопросы по тегам