hive編譯源碼支持自定義UDF函數(shù)

在工作中,我們需要用到自定義UDF函數(shù):

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計,界首網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:界首等地區(qū)。界首做網(wǎng)站價格咨詢:13518219792

????1.可以創(chuàng)建持久函數(shù)

????2.也可以將其編譯在源碼中

本文檔以源碼編譯的方式使用,下面為編譯步驟;

  • 下載源碼包

wget?http://archive.cloudera.com/cdh6/cdh/5/hive-1.1.0-cdh6.7.0-src.tar.gz
tar?xf?hive-1.1.0-cdh6.7.0-src.tar.gz
cd?hive-1.1.0-cdh6.7.0/
  • 進(jìn)入UDF代碼的目錄

cd?ql/src/java/org/apache/hadoop/hive/ql/udf/
------這里我們可以看到好多的UDF代碼,以UDFXXX.java開頭

hive編譯源碼支持自定義UDF函數(shù)

  • 將UDF的代碼上面的目錄下

helloUDF.java

package?com.ruozedata.hadoop.udf;
import?org.apache.hadoop.hive.ql.exec.UDF;
public?class?HelloUDF?extends?UDF{
????public?String?evaluate(String?input)?{
????????//TODO...此處為開發(fā)業(yè)務(wù)邏輯的地方
????????return?"Hello:"?+?input;
????}

????//下面為測試代碼
????public?static?void?main(String[]?args)?{
????????HelloUDF?udf?=?new?HelloUDF();
????????String?output?=?udf.evaluate("測試數(shù)據(jù)");
????????System.out.println(output);
????}
}
  • 在源代碼中注冊自定義的UDF函數(shù)

cd?ql/src/java/org/apache/hadoop/hive/ql/exec/
#vim?FunctionRegistry.java

import?org.apache.hadoop.hive.ql.udf.HelloUDF;

hive編譯源碼支持自定義UDF函數(shù)

在176行增加如下內(nèi)容

system.registerUDF("HelloUDF",?HelloUDF.class,false);

hive編譯源碼支持自定義UDF函數(shù)

  • 編譯hive

[root@hadoop001?exec]#?pwd
/opt/sourcecode/hive-1.1.0-cdh6.7.0
[root@hadoop001?hive-1.1.0-cdh6.7.0]#mvn?clean?package?-DskipTests?-Phadoop-2?-Pdist

hive編譯源碼支持自定義UDF函數(shù)

編譯后的文件為:

????1.packaging/target/apache-hive-1.1.0-cdh6.7.0-bin.tar.gz

????2. ./lib/hive-exec-1.1.0-cdh6.7.0.jar

  • 使用方式

方式一:將apache-hive-1.1.0-cdh6.7.0-bin.tar.gz重新部署

方式二:將編譯后的/lib/hive-exec-1.1.0-cdh6.7.0.jar復(fù)制到${HIVE_HOME}/lib/目錄下

分享題目:hive編譯源碼支持自定義UDF函數(shù)
分享URL:http://www.muchs.cn/article20/jdodco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站制作網(wǎng)站維護(hù)、自適應(yīng)網(wǎng)站網(wǎng)站建設(shè)、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化