hive 自定义函数UDF
1. 内置函数
- 查看内置函数: show functions;
- 显示内置函数的详细信息: desc funcation sum;
- 显示函数的扩展信息: desc funcation extended sum;
2. 自定义函数UDF
当hive提供的内置函数无法满足业务处理需求时,此时就可以考虑使用用户自定义函数。
-
UDF(user-defined function)作用于单个数据行,产生一个数据行作为输出。(数学函数,字 符串函数)
-
UDAF(用户定义聚集函数 User- Defined Aggregation Funcation):接收多个输入数据行,并产 生一个输出数据行。(count,max)
-
UDTF(表格生成函数 User-Defined Table Functions):接收一行输入,输出多行(explode)
3. 实例
自定义一个java类继承UDF,重载 evaluate 方法,此方法将字符串转换成小写。
步骤一: 导入hive需要的jar包,编码
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;
}
}
步骤二: 打成jar上传到服务器
步骤三: 将jar包添加到hive的classpath中
在hive客户端:
查看当前添加过的jar包命令: list jar;
添加jar包的命令: add JAR /home/zhm/toLowerCase.jar;
步骤四: 创建临时函数与开发好的class关联起来:
create temporary function tolowercase as ‘com.zhmcode.hive.customfunc.ToLowerCase’;
步骤五: 在hql中使用自定义函数:
select tolowercase(‘DAMING’);