在Hive中,简单和通用的UDAF有什么区别?

时间:2014-09-08 18:59:30

标签: hadoop hive

此处有文档页面:https://cwiki.apache.org/confluence/display/Hive/GenericUDAFCaseStudy

但简单和通用UDAF之间并没有很好的区别。

如果可能,请指出一些例子。

1 个答案:

答案 0 :(得分:4)

简单UDAFextends UDAF并且有一个或多个静态内部类实现UDAFEvaluator(您的UDAF逻辑)。在运行时,Hive将使用反射来检查静态内部UDAFEvaluator是否适合他接收的参数。这会减慢工作进程,但更容易实现。

使用通用UADF时,您的类会扩展AbstractGenericUDAFResolver,您需要覆盖函数getEvaluator(GenericUDAFParameterInfo info)。该功能将使Hive成为正确的评估者使用。实现起来更复杂,但由于没有使用反射,因此在运行时更快。