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