2013-03-22 92 views
1

我正在嘗試開發一個使用Pig分析一些日誌文件的示例程序。我想分析不同工作的運行時間。當我在工作的日誌文件中讀取,我得到的開始時間和作業結束時間,像這樣:從Pig中的另一行中減去一行的值

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

現在,計算消耗的時間,我需要減去這2個時間戳,但由於兩個時間戳都在同一個包中,我不確定如何比較它們。所以我正在尋找如何做到這一點的想法。謝謝!

+0

貌似此人有同樣的問題: http://stackoverflow.com/a/15222459/1928660 – ATN 2013-03-22 17:00:52

回答

2

這兩個日誌行中是否存在唯一的作業ID?還有什麼可以指出哪個事件是開始的,哪個是結束的?

如果是這樣,您可以讀取數據集兩次,一次用於開始事件,一次用於結束事件,並將兩者結合在一起。然後你將有一個記錄,其中包含兩個事件。

這樣:

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; 
相關問題