当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)
根据用户自定义函数类别分为以下三种:

  1. UDF(User-Defined-Function)一进一出
  2. UDAF(User-Defined Aggregation Function)聚集函数,多进一出 类似于:count/max/min
  3. 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