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]
パラメータ
-
table_identifier
修復するテーブルの名前を指定します。テーブル名は、オプションでデータベース名を使用して修飾できます。
構文:
[ database_name. ] table_name
-
{ADD|DROP|SYNC} PARTITIONS
パーティションをリカバリする方法を指定します。指定しない場合は、ADD がデフォルトです。
- ADD、コマンドは基本テーブルフォルダ内のすべてのサブフォルダで、どのテーブルパーティションにも属さないパーティションをセッションカタログに追加します。
- DROP、コマンドはファイルシステム内に存在しない場所を持つセッションカタログからすべてのパーティションを削除します。
- SYNC はDROP と ADD の組み合わせです。
例
-- 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|
+-------+---+