> 文章列表 > hive:创建自定义函数 UDF

hive:创建自定义函数 UDF

hive:创建自定义函数 UDF

编写Apache Hive用户自定义函数(UDF)有两个不同的接口,一个非常简单,另一个相对复杂点:
简单API: org.apache.hadoop.hive.ql.exec.UDF
复杂API:  org.apache.hadoop.hive.ql.udf.generic.GenericUDF

如果你的函数读和返回都是基础数据类型(Hadoop&Hive 基本writable类型,如Text,IntWritable,LongWriable,DoubleWritable等等),那么UDF可以胜任。

  • 优点:
    • 实现简单
    • 支持Hive的基本类型、数组和Map
    • 支持函数重载
  • 缺点:
    • 逻辑较为简单,只适合用于实现简单的函数

这种方式编码少,代码逻辑清晰,可以快速实现简单的UDF

但是,如果你想写一个UDF用来操作内嵌数据结构,如Map,List和Set,那么你要去熟悉GenericUDF这个API

  • 优点:
    • 支持任意长度、任意类型的参数
    • 可以根据参数个数和类型实现不同的逻辑
    • 可以实现初始化和关闭资源的逻辑(initialize、close)
  • 缺点:
    • 实现比继承UDF要复杂一些

与继承 UDF 相比,GenericUDF 更加灵活,可以实现更为复杂的函数

关于两者的选择

如果函数具有以下特点,优先继承 UDF 类:

  1. 逻辑简单&#x