Hive UDF 运行:在 hive 中创建临时函数时出错

Posted

技术标签:

【中文标题】Hive UDF 运行:在 hive 中创建临时函数时出错【英文标题】:Hive UDF Run:Getting error in create temporary function in hive 【发布时间】:2016-11-28 09:11:07 【问题描述】:

这里我用java写了一个简单的替换词UDF。 然后我导出了那个 .java 文件并创建了 jar 文件。

使用

在 hive 中添加相同的已创建 jar 文件

Add jar jar file path ;

然后我尝试在 hive 中创建临时函数但出现错误

create temporary function  functionname as 'javaprogrampkgname.javaprogramname.';

但是为此在终端上出现以下错误:

FAILED:执行错误,返回代码 -101 从 org.apache.hadoop.hive.ql.exec.FunctionTask。替换UDFpkg/替换UDF :不支持的major.minor 52.0版

【问题讨论】:

似乎是 java 版本不匹配。检查编译和运行时 java 是否相同 Unsupported major.minor version 52.0的可能重复 @Nimal Ram Sir,Java 编译和运行时版本相同:都是 java 版本 "1.7.0_80" javac 1.7.0_80 你是怎么检查的?你是如何创建 jar 文件的? 【参考方案1】:

终于知道这个错误的原因了。

是的,这个错误是由于java版本不匹配造成的,但是如下:

我已经在 Eclipse 中编写、编译和导出为 JAR,然后这个导出的 JAR 尝试在不同版本的 java 中使用,这里由于版本不匹配,JVM 无法调用并找到这个 JAR。

我通过编译我的 java 代码并在为我的 Hadoop 主路径设置的“1.7”版本中创建 JAR 解决了这个问题。

【讨论】:

【参考方案2】:

应该是你创建UDF的地方和你的hive java版本不同的java版本的错误。

【讨论】:

以上是关于Hive UDF 运行:在 hive 中创建临时函数时出错的主要内容,如果未能解决你的问题,请参考以下文章

确定在 Hive 中创建 UDF 的语言

在 hive 中注册 python 自定义 UDF

如何使用 python 在 HIVE 中创建 UDF 进行时间戳转换

如何为 Hive 自定义 UDF 添加 JAR,使其在 HDInsight 群集上永久可用?

描述 hive 自定义 UDF 文档

如何在Hive&Impala中使用UDF