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相关代码就会报错
求助大佬们,困扰我两天了,百度谷歌搜遍了,也没合适解决方案
这个错误信息看起来是说在执行UDF时参数传递有问题,可能是函数参数不匹配或者函数本身有问题导致。由于您已经确定了evaluate函数本身是没有问题的,那么很可能是函数参数不匹配导致的。这个问题可以从以下几个方面入手:
Ip2PoiUDF
的evaluate方法期望接收一个String类型的参数。确保即使您向函数传递的是一个数字或者其他类型的参数,它也能正常工作。geoip2-2.12.0.jar
是否与Hive的版本兼容。这个错误可能是由于版本冲突或兼容性问题导致的。list jars
命令来查看是否成功加载所需的库。GeoLite2-City.mmdb
文件是否包含所需的数据和是否在正确的位置。希望这些提示可以帮助您解决问题。