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

  

 

  

转载于:https://www.cnblogs.com/duking1991/p/6094730.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值