HiveAccessControlException 权限被拒绝。 [关于 pyhs2]

Posted

技术标签:

【中文标题】HiveAccessControlException 权限被拒绝。 [关于 pyhs2]【英文标题】:HiveAccessControlException Permission denied. [On pyhs2] 【发布时间】:2015-06-01 07:14:50 【问题描述】:

我正在尝试通过编写选择查询来通过 pyhs2 访问数据。

import pyhs2

with pyhs2.connect(host='localhost',
               port=10000,
               authMechanism="PLAIN",
               user='hue',
               password='',
               database='default') as conn:

with conn.cursor() as cur:
    print cur.getDatabases()

    cur.execute("select * from orders")
    print cur.getSchema()

    for i in cur.fetch():
        print i

这给了我一个错误:

pyhs2.error.Pyhs2Exception:'编译语句时出错:失败:HiveAccessControlException 权限被拒绝。主体 [name=hue, type=USER] 对对象 [type=TABLE_OR_VIEW, name=default.orders] 没有以下权限:[SELECT]'

建议使用以下几个可用答案:

 grant SELECT on table orders to user hue

这又给了我一个错误:

yhs2.error.Pyhs2Exception:'处理语句时出错:FAILED:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。没有权限。主体 [name=hue, type=USER] 对对象 [type=TABLE_OR_VIEW, name=default.orders] 没有以下权限:[SELECT with grant]'

【问题讨论】:

【参考方案1】:

在授予权限之前,请确保您具有管理员角色:

show current roles;

可能用户只有 public 角色,这还不够。您可以通过命令设置管理员角色:

set role admin; 

参见 Apache Hive 维基:

https://cwiki.apache.org/confluence/display/Hive/SQL+Standard+Based+Hive+Authorization

For Hive 0.14 and Newer
Set the following in hive-site.xml:
hive.users.in.admin.role to the list of comma-separated users who need to be added to admin role. Note that a user who belongs to the admin role needs to run the "set role" command before getting the privileges of the admin role, as this role is not in current roles by default.

【讨论】:

以上是关于HiveAccessControlException 权限被拒绝。 [关于 pyhs2]的主要内容,如果未能解决你的问题,请参考以下文章