2016-05-31 47 views
0

假设您有两个外部Hive ORC表。它们都具有相同数据类型,相同分区和相同桶的相同模式。更改源位置后还原Hive ORC表?

我试图放下表A,并将表B的位置设置为表A的源位置。我都试过:

alter tableB set location "hdfs://.../tableA" 

msck repair table B 

没有运气。

+1

您是否尝试设置分区位置? – leftjoin

+0

为了强调@leftjoin提出的问题,对于分区表,表级“位置”仅仅是未来分区**的默认根目录**。现有分区在Metastore数据库中注册了自己的“位置”。你必须逐个修改它们。 –

+0

或者,您可以尝试*(1)*删除表B中的所有分区*(2)*更改表B的位置*(3)*运行“MSCK修复”以自动检测子目录。以该顺序。 –

回答

0

由于它们是外部表格,因此在放置它们时文件仍然保留。所以你所要做的就是放弃表A和表B。然后使用表A的文件位置重新创建表b。

drop tableA; 
drop tableB; 
create external table if not exists tableB (
....your existing DDL 
) 
location 'tableA path';