使用Pig,计算元组内数字的最佳方法

时间:2015-10-18 20:15:00

标签: hadoop apache-pig

我正在使用数据元组:

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.

寻找建议。

1 个答案:

答案 0 :(得分:0)

输入元组:

(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)