Pig UDF无法过滤单词

时间:2014-02-04 07:21:55

标签: hadoop apache-pig

我有一个推文文件,我想用我的过滤器提取所有推文但是我收到错误

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'

2 个答案:

答案 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

所述