分享

hive udf引入第三方依赖

hive的udf怎么引入依赖呢,我通过下面方式添加了第三方依赖
add file /home/chenxy/hive/GeoLite2-City.mmdb;
add jar /home/chenxy/jars/spark-hive_2.11-2.1.0.jar;
add jar /home/chenxy/jars/geoip2-2.12.0.jar;
add jar /home/chenxy/jars/IpCity.jar;
create temporary function ip2poi as 'com.tianzhuo.portrait.Ip2PoiUDF';
select ip2poi("183.128.104.19");

select ip2poi("183.128.104.19");操作后错误日志如下:
FAILED: SemanticException [Error 10014]: Line 1:7 Wrong arguments '"183.128.104.19"': org.apache.hadoop.hive.ql.metadata.HiveException: Unable to execute method public java.lang.String com.tianzhuo.portrait.Ip2PoiUDF.evaluate(java.lang.String)  on object com.tianzhuo.portrait.Ip2PoiUDF@23592946 of class com.tianzhuo.portrait.Ip2PoiUDF with arguments {183.128.104.19:java.lang.String} of size 1

如果evaluate函数直接返回字符串是没有问题的,加上geoip2-2.12.0.jar相关代码就会报错
求助大佬们,困扰我两天了,百度谷歌搜遍了,也没合适解决方案

QQ截图20190724181713.png

已有(9)人评论

跳转到指定楼层
s060403072 发表于 2019-7-24 21:25:28
添加应该是引用到了,但是可能执行中出错了。先确保udf是没有问题的。
回复

使用道具 举报

希孟100 发表于 2019-7-25 16:58:16
s060403072 发表于 2019-7-24 21:25
添加应该是引用到了,但是可能执行中出错了。先确保udf是没有问题的。

谢谢你的回答,我将udf返回空或者普通的字符串没有问题。一旦加上geoip2-2.12.0.jar相关代码,就报错
回复

使用道具 举报

bioger_hit 发表于 2019-7-25 17:50:15
希孟100 发表于 2019-7-25 16:58
谢谢你的回答,我将udf返回空或者普通的字符串没有问题。一旦加上geoip2-2.12.0.jar相关代码,就报错

看下参数类型是否正确,对于这个ip字符串参数,所以发生了异常。
回复

使用道具 举报

希孟100 发表于 2019-7-26 09:11:01
bioger_hit 发表于 2019-7-25 17:50
看下参数类型是否正确,对于这个ip字符串参数,所以发生了异常。

谢谢你的回答。
在本地测试了没有问题。如果evaluate函数什么都不处理,只返回参数ip,是没有问题的。

一旦我在evaluate函数引用了geoip2-2.12.0.jar相关的代码,就报错了。
回复

使用道具 举报

s060403072 发表于 2019-7-26 10:56:44
希孟100 发表于 2019-7-26 09:11
谢谢你的回答。
在本地测试了没有问题。如果evaluate函数什么都不处理,只返回参数ip,是没有问题的。
...

本地测试为什么没引用这个包,在开发的时候没有引入吗?
你可以在开发环境中引入这个包,然后调试debug下。
而不是到了环境中发生改变,这样从上面异常中是看不出什么问题的。

回复

使用道具 举报

希孟100 发表于 2019-7-27 15:49:22
s060403072 发表于 2019-7-26 10:56
本地测试为什么没引用这个包,在开发的时候没有引入吗?
你可以在开发环境中引入这个包,然后调试debug ...

udf函数,只能在开发环境测试
回复

使用道具 举报

s060403072 发表于 2019-7-27 20:41:57
希孟100 发表于 2019-7-27 15:49
udf函数,只能在开发环境测试

楼主可参考这个:
https://blog.csdn.net/zwjzqqb/article/details/79042636
回复

使用道具 举报

希孟100 发表于 2019-7-29 11:22:40
s060403072 发表于 2019-7-27 20:41
楼主可参考这个:
https://blog.csdn.net/zwjzqqb/article/details/79042636

谢谢回答,我的步骤跟博客上基本是一样的
回复

使用道具 举报

希孟100 发表于 2019-7-30 16:23:29
问题已经找到了,maxmind-db-1.2.2.jar和hadoop集群的maxmind-db-1.0.0.jar冲突,我将geoip2版本改为2.1.0就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条