gpt4 book ai didi

filter - pig 中的过滤器匹配太多

转载 作者:可可西里 更新时间:2023-11-01 15:41:30 27 4
gpt4 key购买 nike

我有一个过滤关键字列表(大约 1000 个),我需要使用这个列表过滤 pig 中的一个关系字段。

最初,我将这些关键字声明为:%declare p1 '.keyword1.';.......

%declare p1000 '.keyword1000.';

我然后像这样进行过滤:

Filtered= FITLER SRC BY (not $0 matches '$p1') and (not $0 matches '$p2') and ...... (not $0 matches '$p1000');

DUMP 过滤;

假设我的源关系在 SRC 中,我需要在第一个字段(即 $0)上应用过滤。

如果我将过滤器的数量减少到 100-200,它工作正常。但随着过滤器数量增加到 1000。它不起作用。

有人可以建议解决方法以获得正确的结果吗?

提前致谢

最佳答案

您可以编写一个简单的过滤器 UDF,您可以在其中执行所有检查,例如:

 package myudfs;
import java.io.IOException;
import org.apache.pig.FilterFunc;
import org.apache.pig.data.Tuple;

public class MYFILTER extends FilterFunc
{
static List<String> filterList;
static MYFILTER(){
//load all filters
}
public Boolean exec(Tuple input) throws IOException {
if (input == null || input.size() == 0)
return null;
try{
String str = (String)input.get(0);
return !filterList.contains(str);
}catch(Exception e){
throw new IOException("Caught exception processing input row ", e);
}
}

}

关于filter - pig 中的过滤器匹配太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10349618/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com