1

Pig を使用していくつかのログ ファイルを分析するサンプル プログラムを開発しようとしています。さまざまなジョブの実行時間を分析したいと考えています。ジョブのログ ファイルを読み取ると、次のようにジョブの開始時刻と終了時刻が取得されます。

(Wed,03/20/13,01:03:37,EDT)
(Wed,03/20/13,01:05:00,EDT)

ここで、経過時間を計算するには、これら 2 つのタイムスタンプを減算する必要がありますが、両方のタイムスタンプが同じバッグに入っているため、それらを比較する方法がわかりません。だから私はこれを行う方法についてのアイデアを探しています。ありがとう!

4

1 に答える 1

2

両方のログ行にあるジョブの一意の ID はありますか? また、どのイベントが開始で、どのイベントが終了かを示すものはありますか?

その場合、データセットを 2 回 (開始イベント用に 1 回、終了イベント用に 1 回) 読み取り、2 つを結合することができます。次に、両方のイベントを含む 1 つのレコードが作成されます。

それで:

A = FOREACH logline GENERATE id, type, timestamp;
START = FILTER A BY (type == 'start');

END = FILTER A  BY (type == 'end');

JOINED = JOIN START by ID, END by ID;

DIFF = FOREACH JOINED GENERATE (START.timestamp - END.timestamp); // or whatever;
于 2013-03-22T18:47:32.580 に答える