猪过滤掉不匹配

Posted

技术标签:

【中文标题】猪过滤掉不匹配【英文标题】:Pig Filter out NOT Matches 【发布时间】:2013-05-23 23:01:31 【问题描述】:

我有一堆具有各种前缀的字符串,包括“未知:”我真的很想在我的 Pig 脚本中过滤掉所有以“未知:”开头的字符串,但它似乎不起作用。

simpleFilter = FILTER records BY NOT(mystr MATCHES '^unknown');

我尝试了一些其他的正则表达式排列,但似乎MATCHES 不能很好地与 NOT 配合使用。我错过了什么吗?

使用 Pig 0.9.2

【问题讨论】:

【参考方案1】:

这是因为 matches 运算符的操作与 Java 的 String#matches 完全一样,即它尝试匹配整个字符串,而不仅仅是它的一部分(在你的例子中是前缀)。只需更新您的正则表达式以将整个字符串与您指定的前缀匹配,如下所示:

simpleFilter = FILTER records BY NOT(mystr MATCHES '^unknown.*');

【讨论】:

啊,谢谢。我也试过'^unknown*',但忘记了.

以上是关于猪过滤掉不匹配的主要内容,如果未能解决你的问题,请参考以下文章