翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
MSCK オプティマイゼーション
Hive は、各テーブルのパーティションのリストをそのメタストアに保存します。ただし、パーティションがファイルシステムに直接追加または削除された場合、Hive メタストアはこれらの変更を認識しません。MSCK コマンドは
MSCK [REPAIR] TABLE table_name [ADD/DROP/SYNC PARTITIONS];
Hive はこのコマンドを次のように実装しています。
-
Hive はメタストアからテーブルのすべてのパーティションを取得します。ファイルシステムに存在しないパーティションパスのリストから、メタストアから削除するパーティションのリストを作成します。
-
Hive はファイルシステムに存在するパーティションパスを収集し、それらをメタストアのパーティションのリストと比較し、メタストアに追加する必要があるパーティションのリストを生成します。
-
Hive は、
ADD
DROP
、SYNC
またはモードを使用してメタストアを更新します。
メタストアに多数のパーティションがある場合、ファイルシステムのexists
API 呼び出しをパーティションごとに行う必要があるため、ファイルシステムにパーティションが存在しないかどうかを確認する手順の実行に時間がかかります。
Amazon EMR 6.5.0 で、Hive はというフラグを導入しましたhive.emr.optimize.msck.fs.check
。このフラグを有効にすると、Hive はファイルシステム API 呼び出しを行う代わりに、上記のステップ 2 で生成されたファイルシステムのパーティションパスのリストからパーティションの存在を確認します。Amazon EMR 6.8.0 では、Hive がこの最適化をデフォルトで有効にしていたため、フラグを設定する必要がなくなりましたhive.emr.optimize.msck.fs.check
。