Apache pig 与清管器过滤器一起使用IN子句

Apache pig 与清管器过滤器一起使用IN子句,apache-pig,Apache Pig,PIG是否支持第条 filtered = FILTER bba BY reason not in ('a','b','c','d'); 或者我应该把它分成多个or 谢谢 您可以通过使用AND/OR/NOT来获取。不,Pig不支持IN子句。 我也有类似的情况。尽管您可以使用AND运算符和filter关键字作为解决方法。 像 A=加载'source.txt'为(用户:chararray,年龄:chararray) B=按($1匹配“塔潘”)和($1匹配“超人”)过滤A 但是,如果所需的过滤数量很

PIG是否支持第条

filtered = FILTER bba BY reason not in ('a','b','c','d');
或者我应该把它分成多个or

谢谢


您可以通过使用AND/OR/NOT来获取。不,Pig不支持IN子句。 我也有类似的情况。尽管您可以使用AND运算符和filter关键字作为解决方法。 像

A=加载'source.txt'为(用户:chararray,年龄:chararray)

B=按($1匹配“塔潘”)和($1匹配“超人”)过滤A

但是,如果所需的过滤数量很大。然后,您可能只需要创建一个包含所有这些关键字的关系,并在匹配的地方执行联接以过滤。
希望这有帮助。

您可以使用Apache DataFu中的以下udf。这将帮助你避免写太多或太多的东西


操作员中添加了清管器0.12。请参见第页底部。发行说明。尚未在官方文件中找到它(除了发行说明中的简单提及)

我们可以在条款中使用以下内容:

A = FILTER alias_name BY col_name IN (val1, val2,...,valn);

DUMP A;
您可以这样做:

X = FILTER bba BY NOT reason IN ('a','b','c','d');

@hese顺便说一句:我在大学里做了一个关于猪拉丁语的项目,文件——至少在当时——非常糟糕。我希望现在更好。不是完全进入猪,只是想纠正一些现有的代码。所以我还不知道:)链接带你进入404页面。打得好!:)虽然PIG现在有一个内置的运算符,但它可能会导致编译大型集合时出现堆栈溢出。DataFu InUDF似乎更强大,这不是过滤掉所有的东西吗,因为你正在寻找第一个同时匹配Tapan和superman的字段