我正在尝试用 Java 构建我的第一个 Pig UDF,但在使用 Eclipse 构建时调用该函数时遇到问题(我的类路径中有 pig 0.10.0 jar 文件)。源文件位于 /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 时,我在 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 中使用不同的类路径,但没有任何运气。我在网上没有找到任何帮助。我该如何解决这个问题?
最佳答案
我对手动打包到 .jar 中感到有点不安。您可以尝试放入 Eclipse 项目并从那里导出吗?
另外,你能确认一下jar的目录结构吗?它应该是这样的:PiggyBank.jar/com/foo/bar/pig/IsInternal.class
关于java - Java中的Pig UDF : Error 1070,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10940463/