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

  

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM