我有一个推文文件,我想用我的过滤器提取所有推文但是我收到错误
public class TweetFilter extends FilterFunc {
static List<String> filterList;
TweetFilter() {
filterList.add("sick");
// Many More Filters
}
public Boolean exec(Tuple input) throws IOException {
if (input == null || input.size() == 0)
return null;
try {
String str = (String) input.get(0);
if (filterList.contains(str)) {
return true;
} else {
return false;
}
} catch (Exception e) {
throw new IOException("Caught exception processing input row ", e);
}
}
}
B = FILTER A BY UDF.TweetFilter($0);
Error : could not instantiate 'UDF.TweetFilter' with arguments 'null'
答案 0 :(得分:1)
如果这是整个代码,则filterList
将为空,从而在调用NullPointerException
时生成filteList.add("sick")
。
要解决此问题,请修改
行 static List<String> filterList;
到
List<String> filterList = new LinkedList<String>();
另外,制作构造函数public
。
Could not instantiate
通常是调用UDF构造函数时出错的错误消息。
答案 1 :(得分:0)
如果你还没有这样做,你应该在尝试从你的猪脚本中调用它之前注册包含你的过滤器的jar
尝试添加:
register myudfs.jar;
如de UDFManual http://wiki.apache.org/pig/UDFManual
所述