【问题标题】:Restoring Hive ORC table after changing source location?更改源位置后恢复 Hive ORC 表?
【发布时间】:2016-06-02 20:21:14
【问题描述】:

假设您有两个外部 Hive ORC 表。它们都具有相同的架构,具有相同的数据类型、相同的分区和相同的存储桶。

我正在尝试删除表 A 并将表 B 的位置设置为表 A 的源位置。我都试过了:

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

msck repair table B

运气不好。

【问题讨论】:

  • 您是否也尝试设置分区位置?
  • 为了强调@leftjoin 提出的观点,对于分区表,表级“位置”只是未来分区的默认根目录。现有分区在元存储数据库中注册了自己的“位置”。你必须一个一个地改变它们。
  • 或者,您可以尝试(1)从表B中删除所有分区(2)更改表B的“位置” (3) 运行MSCK repair 自动检测子目录。按此顺序。

标签: hadoop hive hdfs hiveql


【解决方案1】:

因为当您删除它们时它们是外部表,所以文件仍将保留。所以你所要做的就是删除表 A 和表 b。然后使用表 A 的文件位置重新创建表 b。

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

【讨论】:

    猜你喜欢
    • 2015-10-22
    • 2017-08-31
    • 1970-01-01
    • 2014-11-26
    • 2019-05-03
    • 2015-08-15
    • 2020-09-13
    • 1970-01-01
    • 2016-04-04
    相关资源
    最近更新 更多