栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

hive自定义UDF依赖第三方jar包

hive自定义UDF依赖第三方jar包

上传jar包到HDFS上
hdfs dfs -put xxxx.jar /tmp/hive/
创建永久函数:
create function my_fun as 'com.test.TestUDF' using jar 'hdfs:///tmp/hive/xxxx.jar';
创建临时函数(只对当前窗口的命令行可用):
create temporary function my_fun as 'com.test.TestUDF' using jar 'hdfs:///tmp/hive/xxxx.jar';
报错:
由于自定义的UDF使用的xxxx.jar引入了第三方jar包。在使用UDF函数时会报错。
hive> select my_fun("1234567899","NUMBER");
Added [/tmp/0559eb39-c289-40dc-975f-7edf57c4843f_resources/xxxx.jar] to class path
Added resources: [hdfs:///tmp/hive/xxxx.jar]
FAILED: SemanticException [Error 10014]: Line 1:7 Wrong arguments '"NUMBER"': 
  org.apache.hadoop.hive.ql.metadata.HiveException: 
  Unable to execute method public java.lang.String com.test.TestUDF.evaluate(java.lang.String,java.lang.String) 
  with arguments {1234567899,NUMBER}:com/test/pdc/security/sdk/tass/enums/CryptoFieldType
解决: 方法一:(临时方案,只在当前窗口命令行生效)
将第三方jar包上传到HDFS
hdfs dfs -put dependencie.jar /tmp/hive/
hive命令行添加jar包:
hive> add jar hdfs:///user/hive/dependencie.jar;
方法二:
将UDF中使用的第三方jar包,放到本地的 hive/lib目录下。
在当前服务器使用hive  ,可以正常使用自定义的UDF函数
方法三:
创建一个本地目录,把jar包都放进去。
mkdir /export/hive/dependencie_lib
修改hive-env.sh 增加配置
export HIVE_AUX_JARS_PATH=/export/hive/dependencie_lib
方法四:
创建一个本地目录,把jar包都放进去。
mkdir /export/hive/dependencie_lib
修改hive-site.xml 增加配置,多个jar包用,隔开。

 hive.aux.jars.path
 file:///export/hive/dependencie_lib/dependencie1.jar,file:///export/hive/dependencie_lib/dependencie2.jar

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/745642.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号