我正在尝试使用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中使用不同的类路径,但没有运气。我没有在网上找到任何帮助。我该如何解决这个问题?
答案 0 :(得分:1)
我手动将包装装入.jar有点不安。你能尝试进入日食项目并从那里出口吗?
另外,你能确认一下jar的目录结构吗?它应该是这样的:PiggyBank.jar/com/foo/bar/pig/IsInternal.class
答案 1 :(得分:0)
此错误看起来像你没有修复UDF的类路径路径错误我也有同样的问题你in this链接我解释如何修复上面的错误。希望它会对你有所帮助。