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