专栏首页星汉技术Hive问题之UDF语义错误10014 原

Hive问题之UDF语义错误10014 原

问题描述

使用Hive处理数据的时候,写了一个UDF,然后上传到服务器,添加到Hive中之后,一直报如下的错误:

FAILED: SemanticException [Error 10014]: Line 1:7 Wrong arguments '"[12.34, 18.34]"': No matching method for class cn.com.xh.udf.Distance with (string, string). Possible choices: 

解决思路

语义错误,错误码10014,我只在网上看到一个这个问题的提问,没有人回答,而且他的错误一眼就看出来了, UDF没有使用规定的方法名称,看到这里,我立刻检查我的方法名称,代码片段如下:

import org.apache.hadoop.hive.ql.exec.UDF;

public class Distance extends UDF {

	/**
	 * 两个经纬度点之间的距离计算。
	 * @param coord1 一个点的经纬度形如:[a,b]
	 * @param coord2 另一个点的经纬度,形如:[a,b]
	 * @return value 距离,如果返回-1表示参数无法计算或者缺失
	 */
	public double envalate(String coord1, String coord2) {
		// coord1:Document{{type=Point, coordinates=[116.423291, 39.98778]}}
		// coord2:[116.44308142812918, 39.98923993314435]
		if (coord1 == null && coord2 == null) {
			return -1;// -1表示无法计算,缺失值等不正常情况。
		}
		int c1 = coord1.indexOf("[") + 1;
		// System.out.println(c1);
		int c2 = coord1.indexOf("]");
       //省略后续代码
    }
}

一开始本人看了方法名称,感觉没错,可是后来,认真的对比了之后,发现方法名称写错了,正确的方法名称:evaluate()

这个坑可以吧!踩得够深!

解决方法

将方法名称修改完成,然后删除Hive中已经注册的方法,退出Hive Shell界面,重新进入Hive Shell,再进行UDF注册的步骤。即可解决!有时候不退出的话,会一直报错,不会进行jar包更新。

UDF注册参见:HIVE的UDF以及JDBC编程

总结

自古写代码字母写错了是最难检查的问题,所以写的时候一定要认真!这是一个很怎么说呢?很“高级”的错误!

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • eclipse在线安装FatJar以及错误解决

        help -> Install New Sofware,在Work with输入框输入以下网址:

    云飞扬
  • Sqoop简介以及安装

    云飞扬
  • MongoDB基础之入门

    MongoDB由C/C++开发,是一种强大、灵活、可扩展的数据存储方式。它扩展了关系型数据库的众多有用功能,例如:辅助索引、范围查询和排序。MongoDB还内置...

    云飞扬
  • 一起来学matlab-matlab学习笔记8 基本绘图命令_1 图形窗口简介

    本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一...

    DrawSky
  • Domain Adaptation and Adaptive Information Fusion for Object Detection on Foggy Days

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    于小勇
  • [AI新知] PyTorch Hub发布内建18种预先训练模型工具

    PyTorch Hub透过API和工作流程,提供开发者基本的模型,来重现机器学习相关的研究,脸书发布内建18种预先训练模型工具,方便重制AI研究

    阿泽
  • Python入门进阶教程-邮件发送

    首先需要了解 Python 的 smtplib 提供了一种很方便的途径发送电子邮件,它对 smtp 协议进行了简单的封装。

    小一不二三
  • 设计模式实战 - 原型模式0 导读 - 个性化电子账单1 定义与类型2 适用场景3 优点4 缺点5 扩展

    ● 个性化服务 一般银行都要求个性化服务,发过去的邮件上总有一些个人信息吧,比如“××先生”,“××女士”等 ● 递送成功率 邮件的递送成功率有一定的要求...

    JavaEdge
  • Linux本地Yum源制作

    操作之前准备好以下环境: VMWare Workstation SecureCRT CentOS-6.7-x86_64-minimal.iso //用来...

    sparkle123
  • Qt透明无边框窗口

      设置setWindowFlag(Qt::FramelessWindowHint)即可无边框窗口,但无法移动和改变大小。

    Qt君

扫码关注云+社区

领取腾讯云代金券