首页 > 解决方案 > 添加权限以在 Hive 上创建计划查询失败

问题描述

我在尝试在 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]

知道什么是特定权限,正如我所说,我尝试添加所有权限并且错误仍然存​​在。

标签: hadoophive

解决方案


create_scheduled_query 以及其他类似的 hive 操作是为 hive 管理员保留的特权,这意味着您需要将管理员角色分配给要执行这些特权操作的用户。

这是您需要的配置:

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 到行政。

第 2、第 3 和第 4 不是强制性的,您可能在其中有其他值。

第 5 个是神奇的,这表明哪些用户是管理员,您需要在此处列出您希望拥有这些权限的用户,如下所示:

hive.users.in.admin.role=hive

然后,打开您的 Hive CLI 或 Beeline 并运行以下命令:

设置角色管理员;

即使您的用户在配置中是管理员,此设置也是必需的,hive 用户不会自动以管理员身份运行,您需要 1. 拥有角色,以及 2. 在 CLI 中启用角色。

此时,您应该能够创建日程表、更改它们、删除它们等。


推荐阅读