需要Pig的帮助吗
A = load 'input.txt' as (line:chararray);
B = foreach A generate FLATTEN(TOBAG(*));
C = FOREACH B GENERATE REPLACE(($0, '\\s+', ' ')
在最后一行中需要帮助以单个空格替换多个空格,请删除 "
(引号)和前导 00
使用apache pig
note:- approach 不应该是特定于字段的,因为有超过70个字段,基本上,需要replace、strstring或regex函数的帮助,这些函数可以在一行上执行上述操作。
输入文件
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条答案
按热度按时间uxhixvfz1#
你可以用
REPLACE
函数在pig中进行清理和加载,因为int将从数字中删除前导零。2izufjch2#
不能在同一循环中使用嵌套的replace函数。你必须对你的数据做一系列的操作才能得到你想要的结果。
请在您的数据上尝试以下代码。你们提供的样品做得很好。
*b = FOREACH a GENERATE REPLACE($0,'\\s+',' ');*
c = FOREACH b GENERATE REPLACE($0,'"','');*d = FOREACH c GENERATE REPLACE($0,'\\s+0+',' ');*