当前位置: 首页 > 知识库问答 >
问题:

创建配置单元UDF

辛星宇
2023-03-14
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

请有人帮帮我,因为我是新来蜂巢的。有人能告诉我要遵循的步骤吗

共有1个答案

卫才哲
2023-03-14

您的配置单元UDF以某种方式引用了一个Pig类,它可能在Pig.jar文件中,而不一定在配置单元环境中的类路径上。

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

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

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

 类似资料:
  • 您的回应将不胜感激。谢了!

  • 我找不到以上两种方式有什么不同。有人能给我解释一下或者指导我正确的材料吗?

  • 当然,希望有人能帮助我创建外部配置单元分区表,方法是根据HDFS目录中的逗号分隔文件自动添加数据。我的理解(或缺乏理解)是,当您定义一个已分区的CREATE外部表并为其提供一个位置时,它应该递归地扫描/读取每个子目录,并将数据加载到新创建的已分区的外部表中。下面的内容应该会对我的烦恼提供一些更多的了解… 每个'dt='子目录都包含分隔的文件。

  • 摘要:关注与Hive中的UDF创建有关。 亲爱的朋友们,由于我是在Hive中创建UDF的新手(我通过google读过这方面的文章,但不是很清楚),我在这里的第一件事是确定哪一种可能是最好的方式,比如Java/Python或任何其他方式来编写Hive UDF。 另一件事是我应该在什么基础上分析?我应该寻找什么参数?

  • 我在java中开发了一个工作正常的配置单元udf,我的函数返回输入与配置单元表中列之间的最佳匹配,因此它有以下简化的伪代码: 我的问题是,如果这个函数是由Hive调用的,为什么我需要在代码中连接到Hive?我可以使用使用我的功能的用户所连接的当前连接吗?

  • 这是将Spark dataframe保存为Hive中的动态分区表的后续操作。我试图在答案中使用建议,但无法在Spark 1.6.1中使用 任何推动这一进程的帮助都是感激的。 编辑:还创建了SPARK-14927