web-dev-qa-db-ja.com

Impalaのメタデータの無効化と更新コマンドの違いは何ですか?

Impalaバージョン1.1 に影響するこのリンクを見た:

Impala 1.1以降、REFRESHステートメントは既存のテーブルに対してのみ機能します。新しいテーブルでは、 "INVALIDATE METADATA"ステートメントを発行する必要があります。

これは、それ以降のバージョンのImpalaにも当てはまりますか?

6
covfefe

ClouderaのImpalaによると guide (Cloudera Enterprise 5.8)ですが 5.9 については同じままでした:

INVALIDATE METADATAとREFRESHは対応するものです。INVALIDATEMETADATAは、後続のクエリで必要なときにメタデータの再読み込みを待機しますが、テーブルのすべてのメタデータを再読み込みします。これは、特に多くのパーティションを持つ大きなテーブルの場合、負荷の大きい操作になる可能性があります。 REFRESHはメタデータをすぐに再ロードしますが、新しく追加されたデータファイルのブロック位置データのみをロードするため、全体的にコストの低い操作になります。データがHDFSバランサーによって再編成されるなど、より広範な方法で変更された場合は、INVALIDATE METADATAを使用して、ローカル読み取りの減少によるパフォーマンスの低下を回避します。 Impalaバージョン1.0を使用した場合、INVALIDATE METADATAステートメントはImpala 1.0 REFRESHステートメントと同じように機能しますが、Impala 1.1 REFRESHは、既存のテーブルに新しいデータファイルを追加する一般的なユースケースに最適化されているため、テーブル名の引数は必須。

既存のテーブルでの作業に関連する:

テーブル名は必須パラメーターです[REFRESHの場合]。すべてのテーブルのメタデータをフラッシュするには、INVALIDATE METADATAコマンドを使用します。 REFRESH table_nameは、現在のImpalaノードがすでに認識しているテーブルでのみ機能するため、Hiveシェルで新しいテーブルを作成するときに、INVALIDATE METADATA new_tableと入力してから、impala-Shellで新しいテーブルを表示します。 Impalaがテーブルを認識したら、そのテーブルのデータファイルを追加した後、REFRESH table_nameを発行できます。

だから、それは確かに同じままだったようです。 CDH 5.9にはImpala 2.7が付属していると思います。

8
spijs