gpt4 book ai didi

java - pig 的 Udf 错误

转载 作者:太空宇宙 更新时间:2023-11-04 14:44:42 24 4
gpt4 key购买 nike

我是 pig 的新手。我用pig编写了一个UDF,并在我的pig脚本中使用了它。但它给出了以下错误

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve UserDefined.PartsOfSpeech using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]

这是我的 UDF 代码

    public String exec(Tuple input) throws IOException {
//my code here
}

这是我的 pig 脚本

REGISTER /home/bigdata/NetBeansProjects/UserDefined/dist/UserDefined.jar         
a = load '/user/bigdata/json' using TextLoader() as (input:chararray);
b = foreach a GENERATE UserDefined.PartsOfSpeech(input);

在上面的代码中,UserDefined 是我的包名称,PartsOfSpeech 是我的类名称

最佳答案

错误消息表明 Pig 找不到 UserDefined.PartsOfSpeech

PartsOfSpeech.java 在文件顶部有什么 package 声明?

如果包声明是package com.my.company;,请尝试以下操作:

REGISTER /home/bigdata/NetBeansProjects/UserDefined/dist/UserDefined.jar         
a = load '/user/bigdata/json' using TextLoader() as (input:chararray);
b = foreach a GENERATE com.my.company.PartsOfSpeech(input);

也就是说,将 UserDefined.PartsOfSpeech(input) 替换为 com.my.company.PartsOfSpeech(input),因为 UDF 位于包 com 中.my.company.

此外,请考虑使用 DEFINE关键字,这样您就不需要在每次使用 PartsOfSpeech 时重复 com.my.company

DEFINE PartsOfSpeech UserDefined.dist.PartsOfSpeech();
REGISTER /home/bigdata/NetBeansProjects/UserDefined/dist/UserDefined.jar
a = load '/user/bigdata/json' using TextLoader() as (input:chararray);
b = foreach a GENERATE PartsOfSpeech(input);

艾伦·盖茨Programming Pig的第5章中有关于DEFINE的更多信息:http://chimera.labs.oreilly.com/books/1234000001811/ch05.html#udf_define .

以下是盖茨书中的 DEFINE 示例:

--define.pig
register 'your_path_to_piggybank/piggybank.jar';
define reverse org.apache.pig.piggybank.evaluation.string.Reverse();
divs = load 'NYSE_dividends' as (exchange:chararray, symbol:chararray,
date:chararray, dividends:float);
backwards = foreach divs generate reverse(symbol);

关于java - pig 的 Udf 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24549808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com