列出猪中的关系

List relationships in pig

我有一个这样的列表:

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),然后对于每个字母,我需要找到相关的数字。

如何找到所有相关的号码?我需要一个一个地做吗?如果我有一个非常大的数据集,它会起作用吗?或者我可以使用 pig 中的一些工具来完成此操作。

你能试试这个吗?

输入:

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

PigScript:

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..col2),'_\s+',','));
              }
STORE C INTO 'output' USING PigStorage(',');

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

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