我有一堆具有各种前缀的字符串,包括“未知:”我真的很想过滤掉我的 Pig 脚本中以“未知:”开头的所有字符串,但它似乎不起作用。
simpleFilter = FILTER records BY NOT(mystr MATCHES '^unknown');
我已经尝试了正则表达式的其他一些排列,但似乎 MATCHES 不能很好地与 NOT 一起使用。我错过了什么吗?

使用 Pig 0.9.2

最佳答案

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

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

关于hadoop - Pig 过滤掉不匹配的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16725275/

10-13 03:38