创建配置单元UDF

时间:2013-12-14 13:32:39

标签: hadoop hive

嗨朋友我是Hive的新手。我试图在Hive中创建一个名为ConvertDateFormatUDF的UDF 创建临时函数时出现以下错误:

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

将/home/cloudera/date.jar添加到类路径中 添加资源:/home/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

请有人帮助我,因为我是新手。谁能告诉我要遵循的步骤

2 个答案:

答案 0 :(得分:1)

您的hive UDF以某种方式引用了Pig类,该类可能位于pig.jar文件中,该文件不一定位于Hive环境中的类路径中。

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

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

我不确定您的UDF尝试做什么,但“ConvertDateFormat”听起来像一个非常简单的方法,因此如果您的代码不需要显式引用猪类,我会检查它是否有错误。您可能留下了从您的猪UDF中复制的一些样板代码。

答案 1 :(得分:1)

看起来像你正在创建的UDF的java代码是指PIG库。在创建Hive UDF时,您应该包含配置单元库。我在下面的链接中提到了整个过程 http://lets-do-something-big.blogspot.in/2014/02/hive-udf-example.html。如果您仍然遇到问题,请告诉我