abstractGenericUDAFResolver类的主要作用就是提供hql调用时候的函数参数来获取具体的GenericUDAFEvaluator实例对象,也就是说实现方法getEvaluator即可,该方法的主要作用就是根据参数的不同返回不同的evaluator实例对象,实现多态性。
GenericUDAFEvaluator类主要作用就是根据job的不同阶段执行不同的方法。hive通过GenericUDAFEvaluator.Model来确定job的执行阶段。
1,从原始数据到部分聚合,会调用方法iterate和terminatePartial方法
2,从部分数据聚合和部分数据聚合,会调用方法merge和terminatePartial
3,final,从部分数据聚合到全部数据聚合,会调用方法merge和terminate
complete: 从原始数据到全部数据聚合,会调用方法iterate和terminate。
除了上面提到的iterate,merge,terminate,terminatePartial以外,还有init(初始化并返回返回值的类型),getNewAggregationBuffer(获取新的buffer对象,也就是方法之间传递参数的对象),reset(重置buffer对象)