HIVE---UDF
阿新 • • 發佈:2018-12-17
UDF介紹
UDF,即使用者自定義函式,本質就是外掛。整體思路是:繼承基類UDF,實現evaluate介面,指定類名即可。HIVE中UDF分為兩類:臨時函式和永久函式,函式型別的不同,具體操作過程略有差異。
臨時函式
函式的生命週期與客戶端的會話強繫結,會話關閉時函式被登出;
持久函式
函式的元資訊被持久化到元資料,與客戶端會話的生命相互獨立;
UDF新增過程
Step1:編寫Java實現類,並進行打包;
package com.example.hive.udf; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; public final class Lower extends UDF { public Text evaluate(final Text s) { if (s == null) { return null; } return new Text(s.toString().toLowerCase()); } }
Step2:註冊UDF,與實現類建立對映關係;
- 臨時函式:首先,jar包新增到classpath; 然後執行CREATE命令註冊函式,如下:
CREATE TEMPORARY FUNCTION function_name AS class_name;
- 持久函式:直接執行CREATE命令註冊函式,如下:
CREATE FUNCTION [db_name.]function_name AS class_name [USING JAR|FILE|ARCHIVE 'file_uri' [, JAR|FILE|ARCHIVE 'file_uri'] ];
說明:file_uri為jar包的存放路徑,叢集模式下使用HDFS路徑;單機模式下,可以使用本地路徑;
UDF刪除過程
- 臨時函式:關閉當前會話,或者使用DROP命令;
DROP TEMPORARY FUNCTION [IF EXISTS] function_name;
- 持久函式: 只能使用DROP命令;
DROP FUNCTION [IF EXISTS] function_name;
函式檢視
- 檢視所有所有函式:show functions;
- 檢視某類函式:show functions like ‘*month*’;
- 檢視某個函式的用法:desc function 函式名;
- 檢視某個函式的詳細用法:desc extended function 函式名;
參考: