我有一个蜂巢表'样品'与所有者一起创建的' X'
hive> show table extended like sample;
- 将所有者显示为' X'
有没有办法可以将所有者更改为其他人,而无需重新创建表格(不想丢失数据)
一个已知选项是直接在postgres hive Metastore表中更新所有者。
hive=# update "TBLS" set "OWNER" = 'Y' where "OWNER" = 'X' and "TBL_NAME" = 'sample';
这样安全吗?
答案 0 :(得分:0)
据我所知,除了直接改变Metastore DB之外别无他法。我需要这样做几次 - 没有任何问题。
答案 1 :(得分:0)
我刚刚遇到此问题,可以分享我的解决方案注释,以便为我的“在Metastore DB中直接更改”添加颜色。在我们的配置中,我们使用连接到Hive的Presto。将使用与Presto连接的任何用户(通过Presto CLI上的--user
标志)在配置单元中创建表。
我们收到一条错误消息,例如:
Access Denied: Cannot drop table SCHEMA.TABLE_NAME: Owner of the table is
different from session user
通过在Hive Metastore上执行以下查询,我可以看到表的用户:
select t.OWNER, p.PRINCIPAL_NAME, count(1)
from TBLS t
join TBL_PRIVS p on p.TBL_ID=t.TBL_ID
group by t.OWNER, p.PRINCIPAL_NAME;
然后,我可以通过执行以下操作来更新表:
update TBLS set OWNER='NEW_OWNER' where OWNER='OLD_OWNER';
update TBL_PRIVS set PRINCIPAL_NAME='NEW_OWNER' where PRINCIPAL_NAME='OLD_OWNER';
注意:您应该在事务中运行此操作,并确保首先备份您的Metastore。