pig数据转换

bis0qfac  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(341)

我的数据设置如下:
引用

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编辑器。所有数据都是数字。
非常感谢您的帮助。

zaqlnxep

zaqlnxep1#

我不确定你的意见是真的 tab delimited or space delimited . 基于上述输入,我假设 space 分隔的。
Pig手稿:

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* 文件。

相关问题