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