Hive开发UDF的步骤:
- 继承适当的UDF类或GenericUDF类
- 覆盖适当的方法并实现相应的逻辑功能
- 编译构建成jar包
- 把编译好的jar包放到适当的HDFS路径中
- 用jar创建临时/永久函数
- 检查创建的函数
- 不用这些函数的时候就删除他们
UDF类所在的包:
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>0.12.0</version>
</dependency>
一个简单的字符串拼接函数Hconcat
package udf.exmaple;
import org.apache.hadoop.hive.ql.exec.UDF;
public class Hconcat extends UDF {
public String evaluate(String str1, String str2, String sgin) {
try {
return str1 + sgin + str2;
} catch (Exception e) {
return "000000000";
}
}
}
- 构建Maven项目,编写Hconcat类必须继承UDF,并且需要必须重写evaluate方法。
- 把该Maven项目打包成jar包上传到HDFS的合适(自己随便找)目录中
- 在Hive中创建函数
create temporary function Hconcat as 'udf.exmaple.Hconcat' using jar 'hdfs:///user/root/Hconcat.jar';
//或者
add jar hdfs:///user/root/Hconcat.jar;
create temporary function Hconcat as 'udf.exmaple.Hconcat';
- 检查是否创建
show functions;
- 使用函数
select Hconcat("ID", user_id, "=") from users limit 5;
- 删除函数
drop temporary function Hconcat;