java - Pig脚本/命令来过滤多个字符串上的文件

标签 java regex hadoop pattern-matching apache-pig

我正在尝试编写一个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/

相关文章:

regex - 编辑两个正则表达式之间的距离

sql - ParseException - 子查询源中的输入不匹配 - Hive 中的错误

hadoop - TERMINATED BY的行目前仅支持换行 '\n'

java - 通过反射创建包含匿名内部类的类的对象

java - 比较器接口(interface)

java - Android 内存不足异常存储大量字节

c# - C# 中的正则表达式,用于空、0 或长度为 5 的数字。 (邮政编码)

java - containarized shinyproxy 非常慢

javascript - 无法让正则表达式在允许空格和反斜杠的 JavaScript 中工作

mysql - Ubuntu 上的 Hive 配置