2013-03-22 5 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

ответ

2

Есть ли уникальный идентификатор для задания, которое находится в обеих строках журнала? Также есть ли что-то, чтобы указать, какое событие запускается, а какой конец?

Если это так, вы можете прочитать набор данных дважды, один раз для запуска событий, один раз для завершения событий и присоединиться к ним вместе. Тогда у вас будет одна запись с обоими событиями в ней.

так:

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; 
Смежные вопросы