深入理解 Hive UDAF

Posted @SmartSi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解 Hive UDAF相关的知识,希望对你有一定的参考价值。

1. 概述

用户自定义聚合函数(UDAF)支持用户自行开发聚合函数完成业务逻辑。从实现上来看 Hive 有两种创建 UDAF 的方式,第一种是 Simple 方式,第二种是 Generic 方式。

1.1 简单 UDAF

第一种方式是 Simple(简单) 方式,即继承 org.apache.hadoop.hive.ql.exec.UDAF 类,并在派生类中以静态内部类的方式实现 org.apache.hadoop.hive.ql.exec.UDAFEvaluator 接口:

这种方式简单直接,但是在使用过程中需要依赖 Java 反射机制,因此性能相对较低。在 Hive 源码包 org.apache.hadoop.hive.contrib.udaf.example 中包含几个示例,可以直接参阅。但是这种方式已经被标注为 Deprecated,建议不要使用这种方式开发新的 UDAF 函数。

1.2 通用 UDAF

简单 UDAF 编写起来比较简单,但是由于使用了 Java 反射机制导致性能下降,并且不允许使用变长参数等特性。通用 UDAF 允许所有这些特性,但编写起来可能不如简单 UDAF 那么直观。通用(Generic) UDAF 是 Hive 社区推荐的新写法,推荐用新的抽象类 org.apache.

以上是关于深入理解 Hive UDAF的主要内容,如果未能解决你的问题,请参考以下文章

Hive UDAF开发详解

Hive UDAF开发详解

hive UDAF

Hive UDAF:将非 Java Hive UDAF 的输出转换为地图

Hive 计数不同的 UDAF

Hive中自定义UDAF函数生产小案例