在工作中,我們需要用到自定義UDF函數(shù):
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計(jì),界首網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:界首等地區(qū)。界首做網(wǎng)站價(jià)格咨詢: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)入U(xiǎn)DF代碼的目錄
cd?ql/src/java/org/apache/hadoop/hive/ql/udf/ ------這里我們可以看到好多的UDF代碼,以UDFXXX.java開頭
將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;
在176行增加如下內(nèi)容
system.registerUDF("HelloUDF",?HelloUDF.class,false);
編譯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
編譯后的文件為:
????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://jinyejixie.com/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)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)