2013-12-14 200 views
1

嗨朋友我是Hive的新手。我想创建一个UDF在蜂巢称为ConvertDateFormatUDF 我收到以下错误,创建临时函数:创建配置单元UDF

hive>add jar /home/cloudera/date.jar 

新增/home/cloudera/date.jar到类路径 添加的资源:/首页/ Cloudera的/date.jar

hive>CREATE TEMPORARY FUNCTION fun as 'com.db.acedq.opal.hive.ConvertDateFormatUDF'; 
java.lang.NoClassDefFoundError: org/apache/pig/EvalFunc 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
Caused by: java.lang.ClassNotFoundException: org.apache.pig.EvalFunc 
FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.FunctionTask 

请有人帮助我,因为我是新的配置单元。有人可以告诉我要遵循的步骤

回答

1

您的配置单元UDF在某种程度上指的是Pig类,它可能位于pig.jar文件中,该文件不一定位于Hive环境中的类路径中。

可以使用添加jar来添加外部罐子,就像您自己的用户创建的罐子一样。例如,

hive> add jar /usr/lib/pig/pig.jar; 

我不知道你的UDF正在试图做的,但“ConvertDateFormat”听起来像是一个非常简单的方法,所以如果你的代码并不需要明确引用猪类,我会检查它的错误。也许你可能留下了一些从你的猪UDF中复制的样板代码。