目前我的输出如下:
((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;
我浏览了这些论坛,有些人建议实现这一点的方法是编写一个用户定义的函数。我可以试试,但我是 Pig 的新手,想更详细地了解它的功能。我在 flatten() 上找到了一些东西,但无法真正获得该输出。有没有办法如图所示删除括号和逗号?在此先感谢您的帮助!
最佳答案
如果您默认使用DUMP 命令,输出将存储为元组(即转储到函数括号内的所有字段,由分隔符',' 分隔)
您可以使用 FLATTEN 运算符删除第一个括号,使用 STORE 命令删除第二个括号和 ','。
试试这个
E = FOREACH D GENERATE FLATTEN(($0, COUNT($1)));
STORE E INTO 'output' USING PigStorage(' ');
转到文件夹'output' 并检查文件名以part* 开头。你会看到这样的输出
130 1
131 1
第 132 章
关于hadoop - 删除 Pig 输出中的括号和逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26893141/