当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)
根据用户自定义函数类别分为以下三种:
- UDF(User-Defined-Function)一进一出
- UDAF(User-Defined Aggregation Function)聚集函数,多进一出 类似于:count/max/min
- UDTF(User-Defined Table-Generating Functions)一进多出 如lateral view explore()
1.步骤
(1)继承org.apache.hadoop.hive.ql.UDF
(2)需要实现evaluate函数;evaluate函数支持重载;
(3)在hive的命令行窗口创建函数
a)添加jar add jar linux_jar_path
b)创建function create [temporary] function [dbname.]function_name AS class_name;
(4)在hive的命令行窗口删除函数 Drop [temporary] function [if exists] [dbname.]function_name;
UDF必须要有返回类型,可以返回null,但是返回类型不能为void;2.使用方式
``` add jar /export/data/hive/3_hive-1.0-SNAPSHOT.jar;创建自定义函数
create temporary function base_analizer as ‘com.heima.utf.GmallUDF’; create temporary function flat_analizer as ‘com.heima.udtf.GmallUDTF’;删除索引
DROP temporary FUNCTION base_analizer;查找所有的函数
show functions like “analizer“;
```
参考:
UDTF代码参考 :https://gitee.com/wt_study_demo/hadoop_learning/tree/master/3_hive/src/main/java/com/heima/udtf