小編給大家分享一下Hive如何自定義函數(shù)實(shí)現(xiàn)創(chuàng)建臨時(shí)函數(shù)和永久函數(shù),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都創(chuàng)新互聯(lián)是一家企業(yè)級(jí)云計(jì)算解決方案提供商,超15年IDC數(shù)據(jù)中心運(yùn)營(yíng)經(jīng)驗(yàn)。主營(yíng)GPU顯卡服務(wù)器,站群服務(wù)器,成都溫江機(jī)房,海外高防服務(wù)器,大帶寬服務(wù)器,動(dòng)態(tài)撥號(hào)VPS,海外云手機(jī),海外云服務(wù)器,海外服務(wù)器租用托管等。
1 先創(chuàng)建函數(shù)類文件
1.1 使用IDEA創(chuàng)建maven項(xiàng)目,創(chuàng)建HelloUDF類
1.2 運(yùn)行HelloUDF類,測(cè)試是否成功
1.3 將HelloUDF類打成jar包。2 創(chuàng)建函數(shù)
2.1 創(chuàng)建臨時(shí)函數(shù)
臨時(shí)函數(shù)僅對(duì)當(dāng)前session(黑窗口)有效。
2.1.1 添加jar包的兩種方法
方法一: add jar /home/hadoop/lib/hive-1.0-SNAPSHOT.jar;
方法二: 在hive的文件夾下面創(chuàng)建auxlib文件夾,將jar包上傳到auxlib文件夾下面,重啟hive。
2.1.2 創(chuàng)建臨時(shí)函數(shù)
語(yǔ)法:CREATE TEMPORARY FUNCTION function_name AS class_name;
function_name函數(shù)名
class_name 類路徑,包名+類名
實(shí)例:
-- 創(chuàng)建sayhello函數(shù)
hive> create temporary function sayhello as 'com.ruozedata.bigdata.HelloUDF';
OK
Time taken: 0.087 seconds
hive>
-- 查看函數(shù)列表
hive> show functions;
OK
abs
acos
add_months
sayhello
hive>
-- 測(cè)試使用函數(shù)
hive> select sayhello('zhang','san') from dual ;
OK
Hello:zhang : san
Time taken: 0.558 seconds, Fetched: 1 row(s)
hive>
2.1.3 刪除臨時(shí)函數(shù)
語(yǔ)法:DROP TEMPORARY FUNCTION [IF EXISTS] function_name;
實(shí)例:
hive> DROP TEMPORARY FUNCTION IF EXISTS sayhello;
OK
Time taken: 0.015 seconds
hive>
2.2 創(chuàng)建永久函數(shù)
2.2.1 創(chuàng)建永久函數(shù)的語(yǔ)法:
CREATE FUNCTION [db_name.]function_name AS class_name
[USING JAR|FILE|ARCHIVE 'file_uri' [, JAR|FILE|ARCHIVE 'file_uri'] ];
file_uri:是hdfs上的jar包目錄
2.2.2 添加jar包的兩種方法
-- hdfs上的根目錄下創(chuàng)建lib文件夾
[hadoop@hadoop002 lib]$ hadoop fs -mkdir /lib
18/06/29 16:39:40 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@hadoop002 lib]$
-- 將jar包上傳到hdfs上的/lib 文件夾下
[hadoop@hadoop002 lib]$ hadoop fs -put /home/hadoop/lib/hive-1.0-SNAPSHOT.jar /lib/
18/06/29 16:40:14 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@hadoop002 lib]$
-- 查看jar
[hadoop@hadoop002 lib]$ hadoop fs -lsr /lib
lsr: DEPRECATED: Please use 'ls -R' instead.
18/06/29 16:40:31 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
-rw-r--r-- 1 hadoop supergroup 3242 2018-06-29 16:40 /lib/hive-1.0-SNAPSHOT.jar
[hadoop@hadoop002 lib]$
2.2.3 創(chuàng)建永久函數(shù):
hive> CREATE FUNCTION sayhello AS 'com.ruozedata.bigdata.HelloUDF' USING JAR 'hdfs://hadoop002:9000/lib/hive-1.0-SNAPSHOT.jar';
converting to local hdfs://hadoop002:9000/lib/hive-1.0-SNAPSHOT.jar
Added [/tmp/22d50f26-5227-479e-9319-cb28985b8f5d_resources/hive-1.0-SNAPSHOT.jar] to class path
Added resources: [hdfs://hadoop002:9000/lib/hive-1.0-SNAPSHOT.jar]
OK
Time taken: 0.207 seconds
hive>
-- 查看函數(shù)列表
hive> show functions;
OK
abs
acos
add_months
ruozedata.sayhello
hive>
ruozedata.sayhello函數(shù)創(chuàng)建成功。永久函數(shù)是已:庫(kù)名.函數(shù)名的存在,同庫(kù)使用的時(shí)候可以直接用函數(shù)名,不同庫(kù)使用的時(shí)候需要帶上庫(kù)名
-- 測(cè)試函數(shù)
hive> select sayhello("ruozedata") from dual ;
OK
Hello:ruozedata
Time taken: 0.145 seconds, Fetched: 1 row(s)
hive>
2.2.4 在MySQL庫(kù)里面查看函數(shù)信息
注意:
臨時(shí)函數(shù)和永久函數(shù)的區(qū)別:臨時(shí)函數(shù)僅對(duì)當(dāng)前session(黑窗口)有效。永久函數(shù)是全局的。
以上是“Hive如何自定義函數(shù)實(shí)現(xiàn)創(chuàng)建臨時(shí)函數(shù)和永久函數(shù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站題目:Hive如何自定義函數(shù)實(shí)現(xiàn)創(chuàng)建臨時(shí)函數(shù)和永久函數(shù)
新聞來(lái)源:http://aaarwkj.com/article42/jeeeec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)