REPAIR TABLE

描述

REPAIR TABLE 恢复表目录中的所有分区,并更新 Hive 元数据存储。 使用 PARTITIONED BY 子句创建表时,将生成分区并在 Hive 元数据存储中注册。 但是,如果从现有数据创建分区表,则分区不会自动在 Hive 元数据存储中注册。 用户需要运行 REPAIR TABLE 来注册分区。 对不存在的表或没有分区的表执行 REPAIR TABLE 会引发异常。 恢复分区的另一种方法是使用 ALTER TABLE RECOVER PARTITIONS。 也可以使用 MSCK REPAIR TABLE 调用此命令,以实现 Hive 兼容性。

如果表被缓存,该命令会清除表的缓存数据以及所有引用它的依赖项。 下次访问表或依赖项时,缓存将被延迟填充。

语法

[MSCK] REPAIR TABLE table_identifier [{ADD|DROP|SYNC} PARTITIONS]

参数

示例

-- create a partitioned table from existing data /tmp/namesAndAges.parquet
CREATE TABLE t1 (name STRING, age INT) USING parquet PARTITIONED BY (age)
    LOCATION "/tmp/namesAndAges.parquet";

-- SELECT * FROM t1 does not return results
SELECT * FROM t1;

-- run REPAIR TABLE to recovers all the partitions
REPAIR TABLE t1;

-- SELECT * FROM t1 returns results
SELECT * FROM t1;
+-------+---+
|   name|age|
+-------+---+
|Michael| 20|
+-------+---+
| Justin| 19|
+-------+---+
|   Andy| 30|
+-------+---+