需要帮助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
答案 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;
答案 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+',' ');*