相比于UDF,GenericUDF有两个优势
可以接受复杂的参数类型,返回复杂类型
可以接受变长参数个数(参数数组)
extends UDF
UDF类型的编写相对比较简单,父类源码github位置,简易示例如下...Writable
虽然简单,但是仔细分析一下源码,如何使用 evaluate 方法,从UDF父类中可以看到主要操作了 UDFMethodResolver....Generic: 这是Hive社区推荐的新的写法,以抽象类代替原有的接口.新的抽象类org.apache.hadoop.hive.ql.udf.generic.AbstractGenericUDAFResolver...通用UDAF
通用UDAF的编写主要如下两步:
编写resolver类,resolver负责类型检查,操作符重载.类继承org.apache.hadoop.hive.ql.udf.generic.AbstractGenericUDAFResolver...编写evaluator类.evaluator真正实现UDAF的逻辑.通常来说,实现org.apache.hadoop.hive.ql.udf.generic.GenericUDAFEvaluator,包括几个必须实现的抽象方法