java - Java中的Pig UDF : Error 1070

标签 java hadoop user-defined-functions apache-pig

我正在尝试用 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/

相关文章:

VBA UDF Excel 2010 #VALUE

mysql - UDF 或存储过程的存储库

sql-server-2008 - 将空列表传递给标量函数上的用户定义的表类型参数

Java - 为什么我的 AES 程序不加密/解密双引号?

java - 我的设备出现通知问题

hadoop - Hbase 区域请求不平衡

hadoop - Hadoop MapReduce 是否在每台机器上运行?

Java UI 标记替代 HTML?

java - 如何在 mac 中运行 .jar?

hadoop - HDFS -df命令显示整个群集,无论提供的路径如何