猪过滤掉不匹配

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*',但忘记了.

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

删除匹配模式的猪目录

在 xpath 中使用 [not] 检索与给定值不匹配的内容 (PLSQL)

单个单元格中的计数或总和(?)项目,与Excel中的列表中的条件匹配

过滤掉不相关的 cProfile 输出

javascript Javascript从数组中过滤掉不需要的记录

BigQuery:根据匹配和产品范围维度过滤掉匹配