此处有文档页面:https://cwiki.apache.org/confluence/display/Hive/GenericUDAFCaseStudy
但简单和通用UDAF之间并没有很好的区别。
如果可能,请指出一些例子。
答案 0 :(得分:4)
简单UDAF
类extends UDAF
并且有一个或多个静态内部类实现UDAFEvaluator
(您的UDAF逻辑)。在运行时,Hive将使用反射来检查静态内部UDAFEvaluator
是否适合他接收的参数。这会减慢工作进程,但更容易实现。
使用通用UADF时,您的类会扩展AbstractGenericUDAFResolver
,您需要覆盖函数getEvaluator(GenericUDAFParameterInfo info)
。该功能将使Hive成为正确的评估者使用。实现起来更复杂,但由于没有使用反射,因此在运行时更快。