【发布时间】:2023-03-15 04:36:01
【问题描述】:
假设我将这些放在一个文件中...
1
2
3
使用 Pig 脚本,我怎样才能得到这个(每行中的数字、最小值、平均值、最大值)?
1,1,2,3
2,1,2,3
3,1,2,3
请告诉我猪脚本。我可以使用 Pig 内置函数获取 MIN、AVG、MAX,但无法在每一行中全部获取它们。
谢谢 娜迦
【问题讨论】:
标签: apache-pig
假设我将这些放在一个文件中...
1
2
3
使用 Pig 脚本,我怎样才能得到这个(每行中的数字、最小值、平均值、最大值)?
1,1,2,3
2,1,2,3
3,1,2,3
请告诉我猪脚本。我可以使用 Pig 内置函数获取 MIN、AVG、MAX,但无法在每一行中全部获取它们。
谢谢 娜迦
【问题讨论】:
标签: apache-pig
使用TOBAG 内置UDF 将您的字段放入包中,然后您可以在该包上使用MIN、AVG 和MAX 函数。在一条记录上使用所有三个汇总函数应该没有问题。
【讨论】:
这是我对这个问题的简单解决方案。 我输入了以下数字,
temp2.txt
1
2
3
4
5
.
.
16
17
18
19
20
我遵循了这些步骤,
1]从文件中加载数据
2]然后对所有数据进行分组
3]从分组数据中找到平均值、最小值、最大值
4]然后foreach在loaded data中生成数据的值和最小值、最大值和平均值。
代码如下,
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)
【讨论】: