我正在尝试编写一个Java程序或Hadoop Pig脚本,该脚本将使用逗号分隔的字符串(例如abc, def, xyz
)作为参数,并为包含一个或多个这些字符串的记录过滤文件。
例如。
输入文件:
1 abctree
2 pqrwewe
3 rtrxyz45
4 abcxyz
5 234rt23
输入参数为:
abc, def, xyz
预期产量:
1 abctree
3 rtrxyz45
4 abcxyz
我能够使用
matches
编写用于过滤1个字符串上的文件的脚本,但是不知道如何对多个字符串执行此操作。我是否需要为此编写UDF?我已经在这个问题上添加了Java标记,因为根据我的初步发现,我将不得不编写将用Java编写的UDF。因此,如果有人知道用Java编写此方法的方法,请发布您的解决方案。
最佳答案
我已经弄清楚了:
B = filter A by (n matches '.*string1.*' or n matches '.*string2.*' or n matches '.*string3.*');
这可以解决问题。
但是,根据我的要求,我将接受命令行中的“逗号分隔”输入,例如
string1, string2, string3
。因此,下一个任务是以某种方式分离各个字符串,并在上面的表达式中使用它们。如果有人知道该怎么做(尤其是没有UDF的人),请发布。
关于java - Pig脚本/命令来过滤多个字符串上的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9847486/