2013-03-22 59 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; 
相关问题