一、自定义函数
自定义函数包括三种:
①一进一出:UDF
②多进一出:UDAF—>比如max、sum、count
③一进多出:UDTF—>比如explode()
自定义函数分为三个步骤
1)编写方法的程序
(1)继承Hive提供的类
org.apache.hadoop.hive.ql.udf.generic.GenericUDF
org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;
(2)实现类中的抽象方法
2)上传jar包
3)在hive的命令行窗口创建函数
create [temporary] function [dbname.]function_name AS class_name;
二、自定义UDF函数
比如:需要自定义一个方法实现计算给定字符串的长度
实操:
①创建一个maven工程
②引入相关依赖
<dependencies>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>3.1.2</version>
</dependency>
</dependencies>
③创建一个类继承GenericUDF类
④重写三个方法
initialize、evaluate、getDisplayString
⑤打成jar包上传到服务器/opt/module/hive/datas
⑥将jar包添加到hive的classpath
add jar /opt/module/hive/datas/myudf.jar;
⑦创建临时函数
create temporary function my_len as "com.gis.hive.MyStringLength";
三、自定义UDTF函数
比如:自定义一个UDTF实现将一个任意分割符的字符串切割成独立的单词
①实现一个类继承GenericUDTF 类
②重写三个方法
initialize、process、close
③打成jar包上传到服务器/opt/module/hive/datas
④将jar包添加到hive的classpath
add jar /opt/module/hive/data/myudtf.jar;
⑤创建临时函数
create temporary function myudtf as "com.gis.hive.MyUDTF";