使用IN子句与PIG FILTER

时间:2011-08-24 16:45:06

标签: apache-pig

PIG是否支持IN子句?

filtered = FILTER bba BY reason not in ('a','b','c','d');

或者我应该把它分成多个OR?

谢谢!

6 个答案:

答案 0 :(得分:6)

您可以使用Apache DataFu下面的udf代替。这将帮助您避免编写大量的OR。

https://github.com/linkedin/datafu/blob/master/src/java/datafu/pig/util/InUDF.java

答案 1 :(得分:3)

Pig 0.12已添加到运算符http://www.edureka.co/blog/operators-in-apache-pig-diagnostic-operators/中,请参阅页面底部..发布说明。 Haven没有将它放在官方文档中(除了发行说明中没有提及)

答案 2 :(得分:2)

答案 3 :(得分:1)

不,Pig不支持IN Clause。 我有类似的情况。虽然您可以使用AND运算符和过滤关键字作为解决方法。 像

A = LOAD'source.txt'AS(用户:chararray,年龄:chararray);

B = FILTER A BY($ 1匹配'tapan')AND($ 1匹配'superman');

但是,如果所需的过滤数量很大。然后,您可能只需创建一个包含所有这些关键字的关系,并进行连接以过滤匹配项的位置。 希望这会有所帮助。

答案 4 :(得分:1)

我们可以使用IN子句如下:

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

DUMP A;

答案 5 :(得分:1)

你可以这样做:

require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_DATABASE);

more info