如何恢复误删除的Hive管理表?

问题描述 投票:0回答:1
  1. 我使用以下sql创建了一个托管表并向其中添加了数据
CREATE TABLE test.internal_table (
  id INT,
  name STRING
);
INSERT INTO TABLE test.internal_table VALUES
  (1, 'John'),
  (2, 'Jane'),
  (3, 'Bob'),
  (4, 'Alice'),
  (5, 'Charlie'),
  (6, 'Diana'),
  (7, 'Eva'),
  (8, 'Frank'),
  (9, 'Grace'),
  (10, 'Henry');

  1. 我打开了 HDFS 垃圾箱
    fs.trash.interval=360
  2. 然后我执行“drop table test.internal_table”SQL
  3. 在/user/hive/.Trash/Current/warehouse/tablespace/management/hive/test.db/internal_table路径下找到了被删除的internal_table表的数据文件 enter image description here
  4. 那么如何恢复 test.internal_table ?

我尝试了以下5种方法:

  1. 运行'hdfs dfs mv'命令将删除的数据文件移动到/warehouse/tablespace/management/hive/test.db路径下,然后执行'SELECT COUNT(1) FROM test.internal_table'SQL,但是它没用
  2. 首先执行DDL SQL 重新创建了test.internal_table,然后运行'hdfs dfs mv'命令将删除的数据文件移动到/warehouse/tablespace/management/hive/test.db路径下,但是没有'工作 3.首先执行DDL SQL重新创建test.internal_table,将删除的数据文件移回test.internal_table存储路径,然后运行'msck修复表internal_table;'命令,但是没用
  3. 执行'**加载数据INPATH **'/user/hive/.Trash/Current/warehouse/tablespace/management/hive/test.db/internal_table/'INTO TABLEInternal_table;'将删除的数据文件加载到表中,但是没有成功
  4. 尝试将删除的数据文件移动到/warehouse/tablespace/management/hive/test.db/internal_table,然后运行以下命令:

创建表 test.internal_table ( id 整数, 名称 STRING )位置 '/warehouse/tablespace/driven/hive/test.db/internal_table';

也没用,数据还没有恢复。

hive hdfs
1个回答
0
投票

尝试将数据恢复到表位置,然后运行 MSCK 修复

    MSCK REPAIR TABLE <table_name>;
© www.soinside.com 2019 - 2024. All rights reserved.