PIG中的AVG()函数的ORDER BY

时间:2014-02-21 18:01:58

标签: apache-pig

如何在列上使用avg()然后按照Pig latin的降序排序? 例如 : 如果我有一些如下所示的行,其中最后一列(4.5,3.5,2.5,5.0)是AVG()操作的结果

((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) 

提前致谢!

1 个答案:

答案 0 :(得分: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)