我有一个文本文件,我想加载到我的猪引擎, 文本文件中的名称在单独的行中,而数据却有错误......特殊字符....这样的东西:
Ja@@$s000on
J@@a%^ke
T!!ina
Mel@ani
我想使用REGEX从所有名称中删除特殊字符....我发现在猪中完成工作的一种方式,最后输出为......
Jason
Jake
Tina
Melani
有人可以告诉我将在Pig工作的正则表达式。
同时编写将执行此操作的命令,因为我无法使用 REGEX_EXTRACT 和 REGEX_EXTRACT_ALL 功能。
还有人可以解释在定义正则表达式之后我们传递给此函数的数字1的意义是什么。
任何帮助都将受到高度赞赏。
答案 0 :(得分:8)
您可以使用REPLACE和RegEx解决此问题。
input.txt
Ja@@$s000on
J@@a%^ke T!!ina Mel@ani
PigScript:
A = LOAD 'input.txt' as line;
B = FOREACH A GENERATE REPLACE(line,'([^a-zA-Z\\s]+)','');
dump B;
Output:
(Jason)
(Jake Tina Melani)
答案 1 :(得分:0)
There is no way to escape these characters when they are part of the values in a tuple, bag, or map, but there is no problem whatsoever in loading these characters in when part of a string. Just specify that field as type chararray
请查看here