Hive的UDF實現詳解,HiveUDF實現詳解
Hive自身查詢語言HQL能完成大部分的功能,但遇到特殊需求時,需要自己寫UDF實現。以下是一個完整的案例。
1、eclipse中編寫UDF
①項目中加入hive的lib下的所有jar包和Hadoop中share下hadoop-common-2.5.1.jar(Hadoop目前最新版本2.5.1)。
②UDF類要繼承org.apache.hadoop.hive.ql.exec.UDF類,類中要實現evaluate。 當我們在hive中使用自訂的UDF的時候,hive會調用類中的evaluate方法來實現特定的功能
③匯出項目為jar檔案。
註:項目的jdk與叢集的jdk要一致。
具體例子:
package com.zx.hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
public class UdfTestLength extends UDF{ public Integer evaluate(String s) { if(s==null) { return null; }else{ return s.length(); } }}將上面的類打成jar的形式,我使用eclipse直接匯出為test-udf.jar包,然後放在/root目錄中。
(轉載請註明,更多內容見:http://blog.csdn.net/hwwn2009/article/details/41289197)
2、自訂函數調用過程:
①添加jar包(在hive命令列裡面執行)
hive> add jar /root/test-udf.jar;
②建立臨時函數 ,hive命令列關閉後,即失效。
hive> create temporary function testlength as ‘com.zx.hive.udf.UdfTestLength';
③調用
hive> select id, name, testlength(name) from student;
④將查詢結果儲存到HDFS中
hive> create table result row format delimited fields terminated by '\t' as select id,testlength(nation) from student;
(轉載請註明,更多內容見:http://blog.csdn.net/hwwn2009/article/details/41289197)