使用Cloudera PIG编辑器进行PIG数据转换

时间:2015-03-23 13:36:44

标签: apache-pig transformation cloudera

我的数据设置如下:

引用引用

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编辑器。所有数据都是数字。

非常感谢任何帮助。

1 个答案:

答案 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*文件中生成。