Hive 高级操作(四)之 Hive 自定义函数 UDF
1、用户自定义函数
当 Hive 提供的内置函数无法满足业务处理需要时,此时就可以考虑使用用户自定义函数。
UDF(user-defined function):作用于单个数据行,产生一个数据行作为输出。(数学函数,字符串函数)。
UDAF(用户定义聚集函数 User- Defined Aggregation Funcation):接收多个输入数据行,并产生一个输出数据行。(count,max)。
UDTF(表格生成函数 User-Defined Table Functions):接收一行输入,输出多行(explode)。
2、一个简单的 UDF 示例
(1)先开发一个简单的 java 类,继承 org.apache.hadoop.hive.ql.exec.UDF,重载 evaluate 方法:
Package com.zc.hive.udf
import java.util.HashMap;
import org.apache.hadoop.hive.ql.exec.UDF;
public class ToLowerCase extends UDF {
// 必须是 public,并且 evaluate 方法可以重载
public String evaluate(String field) {
String result = field.toLowerCase();
return result;
}
}
(2)打成 jar 包上传到服务器。
(3)将 jar 包添加到 hive 的 classpath:
hive>add JAR /home/hadoop/hivejar/udf.jar;
查看加入的 jar 的命令:
hive>list jar;
(4)建临时函数与开发好的 class 关联起来:
hive>create temporary function tolowercase as 'com.zc.hive.udf.ToLowerCase';
(5)至