我们说我有这些文件......
1
2
3
使用Pig Script,我怎样才能得到它(每行的数字,最小值,平均值,最大值)?
1,1,2,3
2,1,2,3
3,1,2,3
请让我知道猪脚本。我可以使用Pig内置功能获得MIN,AVG,MAX,但是我无法在每一行中获得它们。
由于 纳加
答案 0 :(得分:2)
使用TOBAG
内置UDF将字段放入包中,然后您可以使用该包上的MIN
,AVG
和MAX
功能。在单个记录上使用所有三个汇总函数应该没有问题。
答案 1 :(得分:1)
这是我解决问题的简单方法。 我输入了以下数字,
temp2.txt
1
2
3
4
5
.
.
16
17
18
19
20
我遵循了这些步骤,
1]加载了文件中的数据
2]然后将所有数据分组
3]从分组数据中找到平均值,最小值,最大值
4]然后在加载数据生成数据中的foreach值以及最小值,最大值和平均值。
代码如下,
grunt> data = load '/home/temp2.txt' as (val);
grunt> g = group data all;
grunt> avg = foreach g generate AVG(data.val) as a;
grunt> min = foreach g generate MIN(data.val) as m;
grunt> max = foreach g generate MAX(data.val) as x;
grunt> values = foreach data generate val,min.m,max.x,avg.a;
grunt> dump values;
以下是输出
输出
(1,1.0,20.0,10.5)
(2,1.0,20.0,10.5)
(3,1.0,20.0,10.5)
(4,1.0,20.0,10.5)
(5,1.0,20.0,10.5)
(6,1.0,20.0,10.5)
(7,1.0,20.0,10.5)
(8,1.0,20.0,10.5)
(9,1.0,20.0,10.5)
(10,1.0,20.0,10.5)
(11,1.0,20.0,10.5)
(12,1.0,20.0,10.5)
(13,1.0,20.0,10.5)
(14,1.0,20.0,10.5)
(15,1.0,20.0,10.5)
(16,1.0,20.0,10.5)
(17,1.0,20.0,10.5)
(18,1.0,20.0,10.5)
(19,1.0,20.0,10.5)
(20,1.0,20.0,10.5)