我遇到一个问题,试图在Hive中创建一些预定查询,我找不到添加什么权限,我试图在数据库上授予ALL,没有任何变化。
命令是:
create scheduled query query_1_stream_1 cron '0 */1 * * * ? *' as
insert into stream_db.kafka_5m partition (st, hr)
...
错误:
Error while compiling statement: FAILED: SemanticException Permission denied: Principal [name=hive, type=USER] does not have following privileges for operation CREATE_SCHEDULED_QUERY [ADMIN PRIVILEGE on INPUT, ADMIN PRIVILEGE on OUTPUT]
是否知道具体的权限是什么,正如我所说的,我试图添加所有权限,但错误仍然存在。
create_scheduled_query以及其他类似的hive操作都是为hive的管理员保留的特权,这意味着您需要将admin角色分配给想要执行这些特权操作的用户或用户。
这是您需要的配置:
hive.server2.enable.doAs=false
hive.security.authorization.enabled=true
hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory
hive.security.authenticator.manager=org.apache.hadoop.hive.ql.security.SessionStateUserAuthenticator
hive.users.in.admin.role=<admin user>
让我们稍微讨论一下配置:hive.server2.enable。doAs会让你的查询以hive的方式运行,这是hive的模拟特性,对于这个角色添加来说并不是真正需要的,但是通常你希望用户hive到admin。
第2、第3和第4个值不是必须的,它们可能包含其他值。
第5个是神奇的,这表明哪些用户是管理员,您需要在这里列出您希望拥有这些权限的用户,如下所示:
hive.users.in.admin.role =蜂巢
然后,打开hive命令行或命令行,执行以下命令:
set role admin;
此设置是必需的,即使您的用户在配置中是admin, hive用户不会自动以admin身份运行。2.拥有角色;在CLI中启用角色。
此时,您应该能够创建您的时间表,更改它们,删除它们,等等。