Pig ERROR 2998:未处理的内部错误(错误名称 MY_CLASS_NAME)

Posted

技术标签:

【中文标题】Pig ERROR 2998:未处理的内部错误(错误名称 MY_CLASS_NAME)【英文标题】:Pig ERROR 2998: Unhandled internal error (wrong name MY_CLASS_NAME) 【发布时间】:2015-12-03 15:29:45 【问题描述】:

尝试在 Pig 中定义我的 UDF 时出错 这是我的猪脚本:

REGISTER 'hdfs://localhost:54310/folder/myudf.jar';
DEFINE MYUD myudf.REDECODE();

当我执行第二行时,我收到此错误消息

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2998: Unhandled internal 
error. myudf/REDECODE (wrong name: REDECODE)

我的 udf 函数:

import java.io.IOException;
import java.util.regex.Pattern;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;

import org.apache.pig.PigWarning;
import org.apache.pig.data.DataType;
import org.apache.pig.impl.util.WrappedIOException;
import org.apache.pig.impl.logicalLayer.schema.Schema;

public class REDECODE extends EvalFunc<String> 

...


如果你能帮我解决这个问题,请。

【问题讨论】:

myudf 包中有 REDECODE 类吗?我在 UDF 类中没有看到包声明语句。 我不在课堂上使用包 在这种情况下,您必须将 DEFINE 语句修改为:DEFINE MYUD REDECODE();我觉得不需要这个 DEFINE 语句你可以直接使用 REDECODE() 谢谢你,我删除了DEFINE,我直接用你说的重新解码 问题解决了吗? 【参考方案1】:

根据@Badr cmets,REDECODE 类是在默认包中定义的,我们可以直接在脚本中使用 REDECODE,或者如果我们需要 REDECODE 的简单别名,那么我们可以使用 DEFINE 并定义别名并继续使用别名.

【讨论】:

以上是关于Pig ERROR 2998:未处理的内部错误(错误名称 MY_CLASS_NAME)的主要内容,如果未能解决你的问题,请参考以下文章

Pig ERROR 2998:未处理的内部错误。静态(错误名称:com/company/Static)

Pig ERROR 2998:未处理的内部错误(错误名称 MY_CLASS_NAME)

Pig 0.13 错误 2998:未处理的内部错误。 org/apache/hadoop/mapreduce/task/JobContextImpl

错误 2998:未处理的内部错误。空 - 阿帕奇猪

猪 0.13.0 中的错误 2998

Pig错误:ERROR 2998: Unhandled internal error. Found interface jline.Terminal, but class was expected(示