【问题标题】:Pig UDF in Java: Error 1070Java 中的 Pig UDF:错误 1070
【发布时间】: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


    【解决方案1】:

    我对手工包装成 .jar 感到有些不安。您可以尝试放入一个 Eclipse 项目并从那里导出吗?

    另外,你能确认一下jar的目录结构吗?应该是这样的:PiggyBank.jar/com/foo/bar/pig/IsInternal.class

    【讨论】:

      【解决方案2】:

      这个错误看起来你没有修复你的 UDF 的类路径路径错误我也有同样的问题你 in this 链接我解释了如何修复上述错误。希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2012-11-18
        • 2016-01-30
        • 2013-04-27
        • 1970-01-01
        • 2015-09-23
        • 2014-03-25
        • 2016-12-04
        • 2013-12-10
        • 1970-01-01
        相关资源
        最近更新 更多