Pig Script - Min,Avg,Max

时间:2014-01-03 03:13:00

标签: apache-pig

我们说我有这些文件......

    1
    2
    3

使用Pig Script,我怎样才能得到它(每行的数字,最小值,平均值,最大值)?

    1,1,2,3
    2,1,2,3
    3,1,2,3

请让我知道猪脚本。我可以使用Pig内置功能获得MIN,AVG,MAX,但是我无法在每一行中获得它们。

由于 纳加

2 个答案:

答案 0 :(得分:2)

使用TOBAG内置UDF将字段放入包中,然后您可以使用该包上的MINAVGMAX功能。在单个记录上使用所有三个汇总函数应该没有问题。

答案 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)