pig脚本-最小值、平均值、最大值

lf3rwulv  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(387)

让我们假设我有这些文件。。。

1
    2
    3

使用pig脚本,我如何得到这个(每行中的数字、最小值、平均值、最大值)?

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

请让我知道Pig的剧本。我能够得到最小值,平均值,最大值使用Pig内置函数,但不能得到他们都在每一行。
多谢娜迦

ryevplcw

ryevplcw1#

使用 TOBAG 内置的自定义项,让你的领域到一个袋子,然后你可以使用 MIN , AVG ,和 MAX 在那个袋子上。在一条记录上使用所有三个摘要函数应该没有问题。

jdzmm42g

jdzmm42g2#

这是我解决这个问题的简单方法。我输入了以下数字,
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)

相关问题