hadoop - 添加权限以在 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]
知道什么是特定权限,正如我所说,我尝试添加所有权限并且错误仍然存在。
解决方案
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 中启用角色。
此时,您应该能够创建日程表、更改它们、删除它们等。
推荐阅读
- apache-spark - Spark - 外壳上的 Hive 表返回空值
- java - AssetFile 描述符不适用于 SetDataSource
- c# - 当我们将默认浏览器设置为 chrome(IE 除外)时,无法从 Windows 应用程序打印 html 文件
- r - R中的绑定环境和函数范围
- c# - 当我尝试更新实体时,EF6 引发 EntityValidationErrors 异常
- python-3.x - 将字符串变量传递给 glob
- sql - 枚举参数不会从数据库返回值
- php - 节省到我在 laravel 中的数据库
- c# - 如何将 ConnectionString 从 appsettings.json 文件传递到 dot net core 2.2 中的类库项目
- javascript - 如何在满足条件之前禁用按钮/选项卡