我正在处理元数据:
dump c;
(20
5
5
)
(1
1
1
5
10
)
我想要实现的输出是统计每个数字的总和,所以像这样:
(1,3)
(5,3)
(10,1)
(20,1)
我尝试了此命令,但未成功:
d = FOREACH c GENERATE COUNT($0);
我目前没有用于c的架构(不确定此时是否重要):
describe c;
Schema for c unknown.
寻找建议。
最佳答案
输入元组:
(20 5 5)
(1 1 1 5 10)
您可以通过标记化然后将其分组来获得元组中的计数。
A = LOAD 'file' using TextLoader() as (line:chararray);
B = FOREACH A GENERATE FLATTEN(TOKENIZE(line)) as (line:chararray);
C = GROUP B BY line;
D = FOREACH C GENERATE group,COUNT(B);
dump D;
输出:
(1,3)
(5,3)
(10,1)
(20,1)
关于hadoop - 使用Pig是计算元组中数字的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33202729/