在清管器中列出关系



我有一个这样的列表:

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吗?或者在猪身上有什么设施可以用来实现这一点。

你能试试这个吗?

输入:

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

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

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

相关内容

  • 没有找到相关文章

最新更新