2017-11-29 10 views
0

は、私は基本的にこのように書き、コードを実行しています:表2のレコードのTABLE1内のレコードのハイブの参加に時間がかかりすぎるのはなぜですか?

Create table abc as 
select A.* from 
table1 A 
Left outer join 
table2 B 
on 
A.col1=B.col1 and A.col2=B.col2; 

番号= 7009102 番号= 1787493

私は私のスクリプトが、私のスクリプトで同様の6つのクエリを持っていますそのようなクエリの4番目についています。私はtezとmapreduceで走ってみましたが、どちらも同じ問題があります。

mapreduceでは、マップが0%低下し、1時間後でも0%低下します。還元剤はありません Tezでは、1時間でわずか22%です。

ログを確認すると、 'progress of TaskAttempt attempt_12334_m_000003_0 is:0.0'のような多くのエントリが表示されます。

私はtezで仕事をしていましたが、現在は3時間近くかかりました。その仕事はMap-2 Verticeで失敗しました。

答えて

0

一般的なヒント怒鳴るのリンクを参照してください速い

1 ORCファイルを使用する
Hiveは、述語プッシュダウン(Hiveのプッシュアップ)や圧縮などの技術を駆使して素晴らしい速度向上を実現する新しいテーブル記憶形式であるORCファイルをサポートしています。
すべてのHIVEテーブルにORCFileを使用するのは簡単ではなく、HIVEクエリの応答時間を短縮するのに非常に有効です。

CREATETABLEA_ORC ( 
customerIDint, namestring, age int, address string 
) 

2.のベクトル化 ベクトル化クエリの実行はスキャン、集計、フィルタのような操作のパフォーマンスを向上させ、単一の行の代わりに、一度に1024行のバッチでたびにそれらを実行することによって、加入します。ハイブ0.13で導入 は、この機能が大幅にクエリの実行時間を改善し、簡単に2つのパラメータ設定で有効になっている:基づき

I. sethive.vectorized.execution.enabled = true; 
II. sethive.vectorized.execution.reduce.enabled = true; 

3.パーティションがジョイン: はハイブに参加し最適化するために、我々は削減しなければなりませんクエリのスキャン時間。そのために、WHERE句またはJOINのON句にパーティション述部を指定することによって、パーティションを持つHiveテーブルを作成できます。例について
「状態」テーブル「状態図」はカラム上に分配され 以下のクエリは、所与の状態のための行を検索:テーブル状態図の場合 最適化は、ハイブ

SELECT state_view.* FROM state view WHERE state_view.state= ‘State-1’ AND state_view.state = ‘State-3’; 

での結合この記事は、すべてのハイブに最適化ニーズに参加すると、あなたを助けた

SELECT state_view.* FROM state_view JOIN city_users ON (state_view.state = city_users.state); 

希望を次のようにあなたがON句でパーティションの範囲を指定することができ、別のテーブルの市ユーザーと参加しました。

関連する問題