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中注册

  

 

  

posted @ 2016-11-23 18:36  OnTheWay_duking  阅读(13585)  评论(1编辑  收藏  举报