过滤前向和反斜杠之间的数据

时间:2016-02-29 05:31:55

标签: hadoop apache-pig

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

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

反斜杠的数量可以是任意次,输入记录可以很长。我不知道应该用什么方法来获得输出。

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

1 个答案:

答案 0 :(得分:1)

以下是您问题的解决方案:

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

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