2016-07-18 2 views
0

Я хочу SUM столбец RW для каждого порта ежечасноапач сценарий поросенок с интервалом времени

Time  ID Name    RW   
-------- --- -------   ---------- 
14:57:01 000 Port0   1340 
14:57:01 001 Port1    13 

14:58:01 000 Port0    864 
14:58:01 001 Port1    36 

14:59:01 000 Port0   1394 
14:59:01 001 Port1    22 

15:57:01 000 Port0   1340 
15:57:01 001 Port1    13 

15:58:01 000 Port0   864 
15:58:01 001 Port1    36 

15:59:01 000 Port0   1394 
15:59:01 001 Port1    22 
. 
. 
. 

20:57:01 000 Port0   1340 
20:57:01 001 Port1    13 

20:58:01 000 Port0   864 
20:58:01 001 Port1   36 

20:59:01 000 Port0   1394 
20:59:01 001 Port1    22 

Мой сценарий

data = LOAD 'hdfs:/data/data.txt' USING PigStorage(',') AS (time:chararray, id:chararray, name:chararray, read:int, write:int, rw:int); 
runs = FOREACH data GENERATE time, name, rw; 

Как

+0

Можете ли вы показать, что вы пробовали? – mhatch

ответ

1

Вы должны генерировать новый столбца из столбца времени, называемого часами, затем группируйте по часам, имя порта и затем получите сумму для каждой группировки.

data = LOAD 'hdfs:/data/data.txt' USING PigStorage(',') AS (time:chararray, id:chararray, name:chararray, read:int, write:int, rw:int); 
runs = FOREACH data GENERATE GetHour((timestamp)time) as hour, name, rw; 
grouped = GROUP runs by (hour,name); 
port_total = FOREACH grouped GENERATE FLATTEN(group) as (hour,name),SUM(data.rw); 
DUMP port_total; 
+0

У меня есть: 'Не удалось вывести функцию соответствия для org.apache.pig.builtin.GetHour как несколько или ни один из них не подходит. Пожалуйста, используйте явное литье. ' Я не знаю, является ли обязательным, чтобы формат времени в моем файле данных был в форме« datetime »« yyyy/MM/dd HH: mm: ss »или нет? – agamil

+0

@agamil Вы загружаете время как chararray. Бросьте его на datetime.Is отредактировал ответ. –

+0

@agamil timestamp –

Смежные вопросы