我的数据设置如下:
引用引用
1000026 4043055
1000033 4190903
1000033 4975983
1000033 4786543
1000043 4091523
1000044 4082383
1000044 4055371
1000045 4290571
1000046 5918892
1000046 5525001
我需要创建PIG代码以将数据转换为以下结构:
引用引用
1000026 4043055
1000033 4190903, 4975983, 4786543
1000043 4091523
1000044 4082383, 4055371
1000045 4290571
1000046 5918892, 5525001
有1600万行数据,所以我不能手工完成。
我正在使用Cloudera PIG编辑器。所有数据都是数字。
非常感谢任何帮助。
答案 0 :(得分:0)
我不确定您的输入实际上是tab delimited or space delimited
。基于以上输入,我假设其space
分隔。
<强> PigScript:强>
A = LOAD 'input' AS (line:chararray);
B = FOREACH A GENERATE FLATTEN(STRSPLIT(line,'\\s+')) AS (col1,col2);
C = GROUP B BY col1;
D = FOREACH C GENERATE group,FLATTEN(REPLACE(BagToString(B.$1.col2),'_',','));
STORE D INTO 'output';
<强>输出:强>
1000026 4043055
1000033 4190903,4975983,4786543
1000043 4091523
1000044 4082383,4055371
1000045 4290571
1000046 5918892,5525001
以上输出将在output/part*
文件中生成。