我正在尝试在 Java 中构建我的第一个 Pig UDF,并且在使用 Eclipse 构建时无法调用该函数(我的类路径中有 pig 0.10.0 jar 文件)。源文件在,类文件由Eclipse/com/foo/bar/pig/IsInternal.java
放入。/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 中使用不同的类路径,但没有任何运气。我在网上没有找到任何帮助。我将如何解决这个问题?