如何在列上使用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)
提前致谢!
答案 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)