這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)hive中怎么添加永久自定義函數(shù),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)公司,專注為中小企業(yè)提供官網(wǎng)建設(shè)、營銷型網(wǎng)站制作、響應(yīng)式網(wǎng)站開發(fā)、展示型成都做網(wǎng)站、網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)等服務(wù),幫助中小企業(yè)通過網(wǎng)站體現(xiàn)價(jià)值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營銷推廣問題。
有一些函數(shù)是比較基礎(chǔ)的,公用的,每次都要create temporary function麻煩了,這樣的基礎(chǔ)函數(shù)需要直接集成到hive中去,避免每次都要創(chuàng)建。
本人擁有一個(gè)賬戶zb_test
自定義的函數(shù)已經(jīng)準(zhǔn)備好
把CLASSPATH改成如下:
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$SQOOP_HOME/lib:/opt/boh-2.0.0/hadoop/share/hadoop/
tools/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/*:/opt/boh-2.0.0/hive/li
b/*:$CLASSPATH(目的是自己編譯的時(shí)候要用到)
解壓,找到hive-exec-0.12.0-cdh6.0.0.jar包(hive函數(shù)跟這個(gè)有關(guān)),再解壓。
jar -xvf XXX.jar
編譯自定義函數(shù)的java文件,比如放在utf下
Javac ./utf/*
產(chǎn)生.class文件,放到abc目錄下。
把.class文件打成jar包
Jar -cvf ./hello.jar ./abc/*
產(chǎn)生一個(gè)jar包,叫hello.jar
把jar包放到/data/zb_test/目錄下
然后修改/data/zb_test/.bashrc文件的:
export CLASSPATH=/data/zb_test/hello.jar:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$SQOOP_HOME/lib:/opt/boh-2.0.0/hadoop/share/hadoop/tools/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/lib/*:/opt/boh-2.0.0/hadoop/share/hadoop/common/*:/opt/boh-2.0.0/hive/lib/*:$CLASSPATH(為了測試用的)
將函數(shù)test注冊到hive的函數(shù)列表中
修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java文件
import org.apache.hadoop.hive.ql.udf.UDFTest;
registerUDF(“test”, UDFTest.class,false);
1:把剛剛產(chǎn)生的所有的.class文件都放到修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/udf下面
2:然后編譯FunctionRegistry.java文件:編譯通過以后,我們找到hive-exec-0.12.0-cdh6.0.0.jar里面的$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.class文件,我們把替換了。
這些路徑都是在hive-exec-0.12.0-cdh6.0.0.jar解壓后的org的路徑下的。
其實(shí)把這兩個(gè)步驟做了以后,重新把剛剛解壓的hive-exec-0.12.0-cdh6.0.0.jar打成jar包,替換了hive里的,就可以了。
上述就是小編為大家分享的hive中怎么添加永久自定義函數(shù)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。