hadoop - 在正斜杠和反斜杠之间过滤数据

标签 hadoop apache-pig

我正在使用 Pig Latin 来过滤数据记录,下面提到的行是我卡住的记录。 输入行: /ACTRC5/TXN08/SCR301\/SEQ/TEX021\@

我期望的输出是: ACTRC5,TXN08,SCR301,SEQ,TEX021

反斜杠的次数可以是任意次数,输入记录可以很长。我不确定应该使用哪种方法来获取输出。

非常感谢任何帮助/建议。

最佳答案

这是您的问题的解决方案:

文件 problem.txt 包含以下数据以及任意序列的\或特殊字符:

示例数据 -- //ACTRC5//TXN08/SCR301/SEQ//TEX021\@

第一步是简单加载数据:

A = LOAD 'problem.txt' as line;

--The next two steps use the String Replace function to clean the data as per your needs:

B = FOREACH A GENERATE REPLACE(line,'([^a-zA-Z0-9\\s]+)',',') AS (data:chararray);

C = FOREACH B GENERATE REPLACE(data,'(^,|,$)','');

DUMP C;

输出:ACTRC5,TXN08,SCR301,SEQ,TEX021

这里我使用了两个阶段来清理数据,稍后我会尝试发布单步解决方案。这应该对现在有所帮助。

关于hadoop - 在正斜杠和反斜杠之间过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35692578/

相关文章:

java - Hadoop:带有自定义输入格式的 NullPointerException

linux - 如何在 hdfs 命令中传递 awk 变量

hadoop - 为什么会有 Pig 和 Hive

hadoop - MapReduce作业花费的时间

hadoop - 我可以将 pig.temp.dir 设置为/user/USERNAME/tmp/pig 吗?

hadoop - PIG负载未提供正确的输出

java - Hadoop 中的 Mapper 输出保存在哪里?

hadoop - 在 Hive 中提取结构数组

java - Zookeeper示例-分布式数学计算

hadoop - TEZ 作为工作级别的执行