【发布时间】:2012-06-07 21:58:42
【问题描述】:
我正在尝试用 Java 构建我的第一个 Pig UDF,但在使用 Eclipse 构建时调用该函数时遇到了问题(我的类路径中有 pig 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 中使用不同的类路径,但没有任何运气。我在网上没有找到任何帮助。我该如何解决这个问题?
【问题讨论】:
标签: java hadoop user-defined-functions apache-pig