用Java编写的第一个UDF

来源:互联网 发布:上海大华电子秤软件 编辑:程序博客网 时间:2024/05/29 17:24

准备:

1.在Hive中以创建t_emp表,并且put数据如下:


2.在Eclipse 中搭建UDF编写环境,导入Hive相关包


实现:

1.编写一个UDF类,继承UDF

package com.rdz.udf;


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


public class MyStrLen extends UDF{
public int evaluate(String str) {
int res=0;
if("".equals(str) || str==null) {
res=0;
} else {
res=str.length();
}
return res;
}
}

2.将工程打包成.jar包形式

3.将jar包添加到Hive中

add jar /home/rdz/hadoop1/MyUDF.jar;

4.自定义函数

create temporary function strlen as 'com.rdz.udf.MyStrLen';

5.使用自定义函数

select name,strlen(name) from t_emp;

结果如下:


6.使用完,可以删除该自定义函数

drop temporary function strlen;


自己出错的地方(比较郁闷的-_-||)

FAILED: SemanticException [Error 10014]: Line 1:7 Wrong arguments 'name': No matching method for class com.rdz.udf.MyStringLength with (string). Possible choices: 

解决:将自定义的类中的函数名改为evaluate。

原创粉丝点击