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 中创建临时函数时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 python 在 HIVE 中创建 UDF 进行时间戳转换