Hive的UDF實現詳解,HiveUDF實現詳解

來源:互聯網
上載者:User

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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.