勇者1108 2019-07-25 17:07 采纳率: 0%
浏览 1398

hive udf报错SemanticException [Error 10014]

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相关代码就会报错
求助大佬们,困扰我两天了,百度谷歌搜遍了,也没合适解决方案

  • 写回答

1条回答

  • 憧憬blog 2023-03-15 05:49
    关注

    这个错误信息看起来是说在执行UDF时参数传递有问题,可能是函数参数不匹配或者函数本身有问题导致。由于您已经确定了evaluate函数本身是没有问题的,那么很可能是函数参数不匹配导致的。这个问题可以从以下几个方面入手:

    1. 确认函数的参数类型和个数是否与传入的参数匹配。例如,您提供的UDF函数Ip2PoiUDF的evaluate方法期望接收一个String类型的参数。确保即使您向函数传递的是一个数字或者其他类型的参数,它也能正常工作。
    2. 检查您使用的第三方库geoip2-2.12.0.jar是否与Hive的版本兼容。这个错误可能是由于版本冲突或兼容性问题导致的。
    3. 确认第三方库是否正确加载。可以使用list jars命令来查看是否成功加载所需的库。
    4. 检查GeoLite2-City.mmdb文件是否包含所需的数据和是否在正确的位置。

    希望这些提示可以帮助您解决问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料