2017-11-27 6 views
0

ほとんどのテーブルに10Mレコードがあり、各右側テーブルに1Mレコードがある場合、hadoopで3つのテーブルを結合することに問題があります。ほとんどの右のテーブルは、親テーブルと結合されたままになります。ドライバテーブルに10Mレコードがあり、子テーブルが1Mレコードで結合されたままであるhadoopのテーブルの結合に関する問題

SELECT distinct Table1.cid,Table2.gdtyp,Table3.ager,Table3.edcd FROM (SELECT 
distinct(cid) FROM Table1 WHERE Table1.orgcd='T002' AND 
(Table1.cacttrdt>=19980101 AND Table1.cacttrdt<=20171120) limit 2) Table1 
LEFT JOIN Table2 Table2 ON (Table2.cid=Table1.cid) LEFT JOIN Table3 Table3 
ON (Table3.cid=Table1.cid) 

上記のクエリは、MapReduceの中に立ち往生しています。 自動変換結合をfalseに設定しました。

+0

エラーまたは例外が発生していますか? – sk7979

+0

いいえ、それは何のエラーも与えていない、クエリはステージでスタックして取得しています。4つのステージは、その第3ステージで常に詰まって – Subhasish

+0

実行中にジョブの状態を確認しましたか? エラーが返るのを待ちます。 その他の場合、圧縮技術、ベクトル化、mapjoin(使用することができれば)を適用してからクエリを実行します。 – sk7979

答えて

0

ベクトル化されたクエリの実行は、ジョイン、スキャン、集計、フィルタなどの操作のパフォーマンスを、毎回単一の行ではなく一度に1024行のバッチで実行することによって向上させます。ハイブ0.13で導入

、この機能は大幅にクエリの実行時間を改善し、簡単に2つのパラメータ設定で有効になっている:=真hive.vectorized.execution.enabled

セット。 hive.vectorized.execution.reduce.enabled = true;

Mapreduceよりも実行エンジンとしてTEZを使用してください。

+0

現在の要件はmapreduceエンジンを使用し、それが以前の場所で立ち往生しています – Subhasish

+0

ちょうど追加すると、同じクエリがHive CLIから立ち往生せずに完了しています。 – Subhasish

関連する問題