hadoop - 删除 Pig 输出中的括号和逗号

标签 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;

我浏览了这些论坛,有些人建议实现这一点的方法是编写一个用户定义的函数。我可以试试,但我是 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/

相关文章:

hadoop - 使用 cassandra 和 pig 进行数据清理

hadoop - 如何在 pig 中使用字符串函数

java - 通过 Java Program 传递 Hadoop 程序命令

java - 包含hadoop/*-common.jar仍然是 “java.lang.ClassNotFoundException:org.apache.hadoop.conf.Configuration”

java - Javac找不到作业类别的符号

linux - Apache pig : Load a file that shows fine using hadoop fs -text

java - pig - 我得到 "Error: Java heap space"和数十万元组

hadoop - 我可以在Spark中创建序列文件吗?

hadoop - pig 的许可被拒绝

docker - 错误:无法设置journalnode进程6520的优先级