2017-03-22 4 views
0

私はブタの値の割合を計算するのと同じ仕事をする2つのスクリプトに出くわしました。豚のパフォーマンスを測定する方法

SCRIPT1

total = FOREACH (GROUP A ALL) GENERATE COUNT(A); 
rows = FOREACH (GROUP A by $0) GENERATE group as colname, COUNT(A) as cnt; 
fractions = FOREACH rows GENERATE colname, cnt/(double)total.$0; 

スクリプト2

test = LOAD 'test.txt' USING PigStorage(',') AS (one:chararray,two:int); 
B = GROUP test by $0; 
C = FOREACH B GENERATE group, COUNT(test.$0); 
D = GROUP test ALL; 
E = FOREACH D GENERATE group,COUNT(test.$0); 
F = CROSS C,E; 
G = FOREACH F GENERATE $0,(double)($1*100/$3); 

SCRIPT1当初から効率的スクリプト2ということです。

豚スクリプトのパフォーマンスを測定するために、VisualVM、JavaのJProfilerなどのツールがあるかどうかを知りたいと思っています。

スクリプトを実行するのにかかる時間は、対策を行う1つの方法ですが、ツールをビルドするにはそれがありますか?

+0

これを試してみてください:http://stackoverflow.com/questions/19434894/pig-performance-measurement私はjob.Butを行います時間でそれをチェックすることは、私は排他的であるかどうかを知りたいと思ったことを知っている – ANI

+0

パフォーマンスをチェックするツール。 –

答えて

0
  • 豚のスクリプトを作成しました。
  • スクリプトに応じて、PigはOptimized Map Reduceでこれを翻訳します。

Explainコマンドを使用すると、両方のスクリプトのMRプランを把握できます。 いくつかの一般的なルールに基づいて計画を比較する(バリエーションがある可能性があります)

  1. Reducersの数が少ないスクリプトは高速になります。
  2. より少ないMRジョブを生成したスクリプトは高速になります。
  3. 与えられたMRでは、少ない数のUDFを呼び出すスクリプトが高速になります。それは場合に役立ちます
関連する問題