我正在尝试用java构建我的第一个pig udf,但是在用eclipse构建时调用该函数时遇到了问题(我的类路径中有pig0.10.0jar文件)。源文件位于 /com/foo/bar/pig/IsInternal.java
类文件放在 /bin/com/foo/bar/pig/IsInternal.class
通过日 eclipse 。
我的代码如下所示:
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时,我在咕噜壳中尝试以下操作:
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条答案
按热度按时间eiee3dmh1#
这个错误看起来像你没有为你的自定义项修复类路径错误我也有同样的问题你在这个链接我解释如何修复上述错误。希望对你有帮助。
njthzxwz2#
我对手工 Package 成一个jar有点不舒服。你能试着把它放到一个eclipse项目中并从那里导出吗?
另外,您能确认jar的目录结构吗?应该是这样的:
PiggyBank.jar/com/foo/bar/pig/IsInternal.class