HIVE 编写自定义函数UDF
一 新建JAVA项目 并添加 hive-exec-2.1.0.jar 和hadoop-common-2.7.3.jar
hive-exec-2.1.0.jar 在HIVE安装目录的lib目录下
hadoop-common-2.7.3.jar在hadoop的安装目录下的\share\hadoop\common
二 编一个一个类并继承UDF 并重写evaluate方法
下面以rownum为例
package com.udf; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; public class RowNumUDF extends UDF{ public static String signature = "_"; public static int order = 0; public int evaluate(Text text){ if(text != null){ //分组排序的依据,列名,通常为主键 String colName = text.toString(); //处理第一条数据 if(signature == "_"){ //记下分组排序的字段:主键,并将rownum设为1 signature = colName; order = 1; //返回rownum return order; }else{ //首先比对是否和上一条主键相同 if(signature.equals(colName)){ //rownum依次加1 order++; return order; }else{ //如果主键改变,将rownum设为1 signature = colName; order = 1; return order; } } }else{ //如果主键为空,则返回-1 return -1; } } }
三 导出位jar包并在HIVE中注册