标题可能有点混乱,所以我将展示我想要实现的目标。
假设我有一个只有int的数据。
10
20
30
40
50
60
70
80
90
这个数据叫做data.csv之类的
我也是
A = load 'data.csv' using PigStorage(',');
它会把它加载到
然后我用这些数据计算平均值。
我就是这么做的
B = foreach A generate int;
C = group B all;
avg = foreach C generate AVG(B.int);
(忽略小的语法错误,你就明白了)
所以如果我转储avg,我会得到一个整数,代表数据a的平均值。
所以,现在我想做的是
通过仅具有高于平均值的数据来过滤掉数据a。
像这样的事情
X = filter A by int > avg
但它不喜欢我使用数据变量来进行过滤器比较。
我应该如何做到这一点?
1条答案
按热度按时间t30tvxxf1#
生成原始数据和平均值,然后过滤:
关系
D
将所有原始行的平均值作为第二个字段追加。