list关系

axzmvihb  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(211)

我有这样一个清单:

a, 2
b, 1
a, 5
c, 5
d, 3
a, 3

我想把它转换成:

a,  2,3,5
b,  1
c,  5
d,  3

换句话说,我需要找到与字母相关的数字。
我想的是,我可以过滤并得到一个唯一字母的列表(a,b,c,d),然后对于每个字母,我需要找到相关的数字。
如何找到所有相关的号码?我需要一个接一个地做吗?如果我有一个非常大的数据集,会不会是wokr?或者是在Pig有一些设施,我可以用来完成这一点。

rqmkfv5c

rqmkfv5c1#

你能试试这个吗?
输入:

a, 2
b, 1
a, 5
c, 5
d, 3
a, 3

Pig手稿:

A = LOAD 'input' USING PigStorage(',') AS (col1:chararray,col2:chararray);
B = GROUP A BY col1;
C = FOREACH B {
                 sortedRow = ORDER A BY col2 ASC;
                 GENERATE group,FLATTEN(REPLACE(BagToString(sortedRow.$1.col2),'_\\s+',','));
              }
STORE C INTO 'output' USING PigStorage(',');

输出:(将存储在 output/part* 文件)

a, 2,3,5
b, 1
c, 5
d, 3

相关问题