用单个空格替换多个空格,删除"并使用APACHE PIG领先0

时间:2016-01-27 14:37:25

标签: hadoop apache-pig

需要帮助PIG

A = load 'input.txt' as (line:chararray);
B = foreach A generate FLATTEN(TOBAG(*));
C = FOREACH B GENERATE REPLACE(($0, '\\s+', ' ')  

在最后一行需要帮助以使用单个空格替换多个空格,使用APACHE PIG删除"(行情)和前导00

注意: - 方法不应该是字段特定的,因为有超过70个字段,  基本上,期待有关REPLACE或STRSTRING OR REGEX功能的帮助,这些功能可以在线上执行提及的操作。

INPUT.TXT

00595, ab 000cdef      california "state,   00USA
00733, 0ds ds "ARIZONA 00state, USA

预期输出

595, ab cdef califormia state, USA
733, ds ds ARIZONA state, USA

2 个答案:

答案 0 :(得分:0)

您可以在Pig中使用REPLACE函数进行清理和加载,因为INT将从数字中删除前导零。

A = LOAD '/usr/pigfiles/pigo.txt' using PigStorage(',') as (value: INT, state: chararray, country: chararray);  
B = FOREACH A GENERATE value,REPLACE(REPLACE(state,'  ', ' ' ),'\\"',''),  country; 
DUMP B;

Output

答案 1 :(得分:0)

您不能在同一循环中使用嵌套的REPLACE函数。您必须对数据进行一系列操作才能获得所需的结果。

在您的数据上尝试以下代码。它在你提供的样品上运作良好。

*a = LOAD 'ip.txt' USINGTextLoader();*

*b = FOREACH a GENERATE REPLACE($0,'\\s+',' ');*

*c = FOREACH b GENERATE REPLACE($0,'"','');*

*d = FOREACH c GENERATE REPLACE($0,'\\s+0+',' ');*