从Pig的输出中删除括号和逗号

时间:2014-11-12 17:42:00

标签: hadoop apache-pig

目前我的输出如下:

((130,1))
((131,1))
((132,1))
((133,1))
((137,1))
((138,2))
((139,1))
((140,1))
((142,2))
((143,1))

我想拥有它:

130 1
131 1
132 1

我的代码如下:

A = LOAD 'user-links-small.txt' AS (user_a: int, user_b: int);
B = ORDER A BY user_a;
grouped = COGROUP B BY user_a;
C = FOREACH grouped GENERATE COUNT(B);
D = COGROUP C BY $0;
E = FOREACH D GENERATE($0, COUNT($1));
DUMP E;

我正在浏览这些论坛,有些人建议通过编写用户定义的函数来实现这一目标。我可以尝试一下,但我是猪的新手,想要更详细地了解它的功能。我在flatten()上找到了一些东西,但却无法获得那个输出。有没有办法删除括号和逗号,如图所示?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果默认情况下使用 DUMP 命令,则输出将存储为元组(即,所有以字母','分隔的功能括号内的字段)

您可以使用 FLATTEN 操作符和第二个括号删除第一个括号,使用 STORE 命令删除',

试试这个

E = FOREACH D GENERATE FLATTEN(($0, COUNT($1)));
STORE E INTO 'output' USING PigStorage(' ');

转到文件夹'output',然后检查文件名以part *开头。你会看到像这样的输出 130 1
131 1
132 1