2015-02-21 12 views

ответ

1
register 'file:$piglib/datafu-1.2.0.jar'; 

define FirstTupleFromBag datafu.pig.bags.FirstTupleFromBag(); 

input_data = load 'so.txt' using PigStorage('\t') as (session_id:int, sequence:int, time:long); 

g = group input_data by session_id; 

r = foreach g { 
    s1 = order input_data by sequence asc; 
    s2 = order input_data by sequence desc; 
    generate group as session_id, FirstTupleFromBag(s1, null).time as start, FirstTupleFromBag(s2, null).time as end; 
} 

dump r; 

Прежде всего, мы группа по session_id, а затем сортировать по восходящей последовательности и порядок убывания и принять первый кортеж из отсортированных мешков соответственно.

Это делает использование библиотеки datafu UDF (http://datafu.incubator.apache.org/docs/datafu/1.2.0/datafu/pig/bags/FirstTupleFromBag.html)

+0

Awesome, это действительно очень хорошая логика +1. –

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

  • Нет связанных вопросов^_^