Hive 如何更改配置单元表所有者

Hive 如何更改配置单元表所有者,hive,Hive,我创建了一个配置单元表“sample”,其所有者为“X” hive> show table extended like sample; --将所有者显示为“X” hive> show table extended like sample; 是否有一种方法可以将所有者更改为其他“Y”,而无需重新创建表(不希望丢失数据) 一个已知的选项是直接在postgres配置单元元存储表中更新所有者 hive=# update "TBLS" set "OWNER" = 'Y' where "OW

我创建了一个配置单元表“sample”,其所有者为“X”

hive> show table extended like sample;
--将所有者显示为“X”

hive> show table extended like sample;
是否有一种方法可以将所有者更改为其他“Y”,而无需重新创建表(不希望丢失数据)

一个已知的选项是直接在postgres配置单元元存储表中更新所有者

hive=# update "TBLS" set "OWNER" = 'Y' where "OWNER" = 'X' and "TBL_NAME" = 'sample';

这安全吗?

据我所知,除了直接更改metastore DB之外,没有其他方法可以做到这一点。我需要做这几次-没有任何问题。

我刚刚经历了这个问题,可以分享我的分辨率笔记,为“Metastore DB中的直接更改”添加颜色。在我们的配置中,我们使用连接到蜂巢的Presto。将在配置单元中使用Presto连接为的任何用户创建表(使用Presto CLI上的
--user
标志)

我们收到一条错误消息,例如:

Access Denied: Cannot drop table SCHEMA.TABLE_NAME: Owner of the table is 
different from session user
我可以通过在配置单元元存储上执行以下查询来查看表的用户:

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';
注意:您应该在事务中运行此操作,并确保首先备份元存储