Улей конфигурации с 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;