Impalaユーザー定義関数(UDF)
Impala User Defined Function
ビジネスニーズのため、MD5が使用されていますが、Impalaにはこの機能がなく、UDFを使用して実装されています。以下は、実装プロセスです。
UDFの実装ポイント:
- クラスタ内のHiveバージョンに従って対応するバージョンをインポートしますhive-exec.jar
- 継承するカスタムUDFクラスUDFインターフェース
- 成し遂げるEvaluation()メソッド
Mavenの依存関係:
org.apache.hive hive-exec 1.1.0
ソースコード:
import org.apache.hadoop.hive.ql.exec.UDF import java.security.MessageDigest public class MD5 extends UDF{ public static String evaluate(String value) { StringBuilder sb = new StringBuilder() try { MessageDigest messageDigest = MessageDigest.getInstance('MD5') byte[] bytes = messageDigest.digest(value.getBytes()) for (int i = 0 i jarパッケージのエクスポート:mvnパッケージ
Hdfsへのアップロード:hdfs dfs -copyFromLocal ./MyHiveUDF.jar / user / impala / user_function /、Hueのファイルブラウザーを使用してアップロードすることもできます。これはより便利です。
インパラ登録:色相のインパラクエリインターフェイス(またはインパラシェル)で実行
create function md5(string) returns string location 'hdfs://nameservice/user/impala/user_function/MyHiveUDF.jar' symbol='com.business.bi.udf.MD5'
SQLの説明:
md5(string)は文字列を返します登録されたメソッド名はmd5、入力パラメータタイプは文字列、戻り値タイプは文字列です
場所 'hdfs://nameservice/user/impala/user_function/MyHiveUDF.jar'UDFメソッドjarパッケージの場所
symbol = 'com.business.bi.udf.MD5'カスタムUDFクラス名
テスト:
select MD5('123456789')
出力は次のとおりです。25f9e794323b453885f5181f1b624d0b
上記のプロセスが実行された後、このメソッドはHiveでも使用できます
参照:http://th7.cn/Program/java/201709/1257880.shtml