2017-11-08 15 views
0

私はすべての演算子組合の番号を使用しているクエリを使用して、寄木細工の保存形式に分割ハイブテーブルを移入していてハイブから作成された寄木細工のテーブルからデータを読み取ることができません。クエリーはTezを使用して実行されます。デフォルト設定では、複数のTezライターが並行してHDFS構造を作成します。ここでは、パーケットファイルはパーティションフォルダの下に(フォルダ名のTezライターIDを使用して)サブフォルダ内にあります。 など。 /apps/hive/warehouse/scratch.db/test_table/part=p1/8/000000_0インパラ2.7はTEZ

メタデータを無効にしてテーブル上の統計情報を収集した後でも、テーブルが照会されるとImpalaはゼロ行を返します。 問題は、Impalaがパーケットファイルを探すためにパーティションのサブフォルダに移動していないことが原因です。

hive.merge.tezfilesをtrueに設定した場合(デフォルトではfalse)、Tezは余分な処理ステップを使用して複数のファイルを1つにまとめる必要があります。結果として得られる寄木細工ファイルはパーティションフォルダの直下に書き込まれ、 Impalaは新しいパーティションまたは更新されたパーティションのデータを見ることができます。

インパラは、パーティションのサブフォルダに見て、それを指示するか、おそらくその点に関してその動作を変更インパラのためのパッチがあるために設定オプションがあるのだろうか。

答えて

3

TABLEの場所の下のサブディレクトリからファイルを再帰的に読み取りがインパラでサポートされていない今のところ。 例:テーブルは、「/ホーム/データ/入力/」

場所で作成されている場合は、ディレクトリ構造がある場合は、次のように:

/home/data/input/a.txt 
    /home/data/input/b.txt 
    /home/data/input/subdir1/x.txt 
    /home/data/input/subdir2/y.txt 

はその後、インパラは、次のファイルから照会でき のみ

/home/data/input/a.txt

/home/data/input/b.txt次のファイルが

を照会していません

代替ソリューションとして、あなたはハイブからデータを読み取ることができ、最終ハイブ表に挿入します。

対話やレポートクエリのこのテーブルの上にインパラビューを作成します。

あなたは、構成設定の下に使用してハイブでこの機能を設定することができます。

ハイブは、サブディレクトリはオプション

SET mapred.input.dir.recursive=true;

SET hive.mapred.supports.subdirectories=true;

+0

こんにちはSokhatyでスキャンをサポート、答えはあなたを助けていましたか? –

+0

さて、私は努力を感謝しますが、私はすでにインパラの箱からサポートされていないと考えました。私の質問は、Impalaがサブフォルダを認識できるようにするための追加オプションやフィックスの存在に関するものでした。 – sokhaty

+0

現時点でインパラでの修正はありません。 –