2014-02-21 2 views
0

Как использовать avg() для столбца, а затем сортировать в порядке убывания в Pig latin? Например: Если у меня есть несколько строк, как показано ниже, где последний столбец (4.5,3.5,2.5,5.0) является результатом AVG() операцияORDER BY на функции AVG() в PIG

((1,Apple),4.5) 
((2,Orange),3.5) 
((3,Kiwi),2.5) 
((4,Banana),5.0) 

My desired output is 
((4,Banana),5.0) 
((1,Apple),4.5) 
((2,Orange),3.5) 
((3,Kiwi),2.5) 

Заранее спасибо!

ответ

0

Используйте операционный оператор ORDER BY. Например:

data = LOAD 'input' using PigStorage(',') AS (key1:int,key2:chararray,val:double); 

data = FOREACH (GROUP data BY (key1,key2)) 
    GENERATE group as key, AVG(data.val) as avg_val; 

data = ORDER data BY avg_val DESC; 

STORE data INTO 'output'; 

Затем, если это ваш вход:

1,Apple,3.5 
1,Apple,5.5 
2,Orange,2.5 
2,Orange,4.5 
3,Kiwi,1.5 
3,Kiwi,3.5 
4,Banana,4.0 
4,Banana,6.0 

Вы получите этот результат:

((4,Banana),5.0) 
((1,Apple),4.5) 
((2,Orange),3.5) 
((3,Kiwi),2.5) 
+0

Спасибо большое! Оно работает – user863867

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