Java中的Pig UDF:错误1070

时间:2012-06-07 21:58:43

标签: java hadoop user-defined-functions apache-pig

我正在尝试使用Java构建我的第一个Pig UDF,并且在使用Eclipse构建时调用该函数时遇到问题(我的类路径中有我的猪0.10.0 jar文件)。源文件位于/com/foo/bar/pig/IsInternal.java中,类文件由Eclipse放置在/bin/com/foo/bar/pig/IsInternal.class中。

我的代码如下所示:

package com.foo.bar.pig;

// ... imports ...

public class IsInternal extends FilterFunc {
    public Boolean exec(Tuple input) throws IOException {
        // ... code here ...
        return true; // or false
    }
}

编译之后,我从项目目录外部运行jar -cf PiggyBank.jar BiggyBank,将其打包成一个JAR。当我运行Pig时,我在grunt shell中尝试以下内容:

REGISTER /full/path/to/PiggyBank.jar
DEFINE isInternal com.foo.bar.pig.IsInternal();

A = LOAD '/some/file/in/hdfs' USING PigStorage();
B = FILTER A BY isInternal($1);

此时我收到以下错误:

ERROR 1070: Could not resolve com.foo.bar.pig.IsInternal using imports: [, org.apache.pig.builtin, org.apache.pig.impl.builtin.]

Java代码本身很好(我已经测试过了),我尝试在DEFINE中使用不同的类路径,但没有运气。我没有在网上找到任何帮助。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我手动将包装装入.jar有点不安。你能尝试进入日食项目并从那里出口吗?

另外,你能确认一下jar的目录结构吗?它应该是这样的:PiggyBank.jar/com/foo/bar/pig/IsInternal.class

答案 1 :(得分:0)

此错误看起来像你没有修复UDF的类路径路径错误我也有同样的问题你in this链接我解释如何修复上面的错误。希望它会对你有所帮助。