我有一个这样的列表:
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