2014-02-21 26 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