溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

hive編譯源碼支持自定義UDF函數

發布時間:2020-07-24 22:06:22 來源:網絡 閱讀:656 作者:bigdata_lzw 欄目:大數據

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

????1.可以創建持久函數

????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/
  • 進入UDF代碼的目錄

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

hive編譯源碼支持自定義UDF函數


  • 將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...此處為開發業務邏輯的地方
????????return?"Hello:"?+?input;
????}

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

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

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

hive編譯源碼支持自定義UDF函數

在176行增加如下內容

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

hive編譯源碼支持自定義UDF函數

  • 編譯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函數

編譯后的文件為:

????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復制到${HIVE_HOME}/lib/目錄下



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女