开发HIVE的UDF自定义函数

[Author]: kwu 


1 、UDF自定义函数

自定义函数包括三种UDF、UDAF、UDTF 
UDF(User-Defined-Function)  一进一出
UDAF(User- Defined Aggregation Funcation) 聚集函数,多进一出。count/max/min
UDTF(User-Defined Table-Generating Functions)  一进多出,如lateral  view  explore()


使用方式 :
在HIVE会话中add 自定义函数的jar文件,然后创建function,继而使用函数。


2、 UDF开发
继承org.apache.hadoop.hive.ql.UDF 
需要实现evaluate函数 
evaluate函数支持重载 
实现一进一出的操作


3、Java编写UDF,实现的功能很简单,自定义hash函数用来替代原有的hash函数,这里用的是MurmurHash

[java]  view plain copy
  1. import org.apache.hadoop.hive.ql.exec.UDF;  
  2.   
  3. import com.hexun.utils.MurmurHash;  
  4.   
  5. public class HashMurUDF extends UDF {  
  6.     public String evaluate(String cookie) {  
  7.         long hash64 = MurmurHash.hash64(cookie);  
  8.         return hash64+"";  
  9.     }  
  10. }  


增加相关依赖的jar

开发HIVE的UDF自定义函数_第1张图片



引用UDF定义的函数

[sql]  view plain copy
  1. add jar /opt/softwares/UDF.jar;  
  2. create temporary function HashMur as 'com.hexun.udf.HashMurUDF';  
  3. insert overwrite table cookiekeyMurHash select HashMur( cookie) key,cookie from all_dpi_cdr where length(cookie)>0;  



你可能感兴趣的:(hive)