REPAIR TABLE

說明

REPAIR TABLE 會復原資料表目錄中的所有分割區,並更新 Hive 元資料儲存庫。在使用 PARTITIONED BY 子句建立資料表時,會產生分割區並註冊至 Hive 元資料儲存庫。不過,如果分割資料表是由現有資料建立,分割區不會自動註冊至 Hive 元資料儲存庫。使用者需要執行 REPAIR TABLE 來註冊分割區。對不存在的資料表或沒有分割區的資料表執行 REPAIR TABLE 會擲回例外狀況。復原分割區的另一種方法是使用 ALTER TABLE RECOVER PARTITIONS。為了相容於 Hive,也可以使用 MSCK REPAIR TABLE 來呼叫這個指令。

如果資料表已快取,指令會清除資料表及其所有相關聯的依賴項目的快取資料。下次存取資料表或依賴項目的時候,快取會延遲填入。

語法

[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|
+-------+---+