hive udf 函數(shù):MD5

利用 hive 做數(shù)據(jù)查詢或者分析的時候,原生的 hive 函數(shù)可能無法滿足我們的需求,這時候我們可以自定義 hive udf,函數(shù);

自定義 hive udf 函數(shù),有以下兩點要求:

  • 函數(shù)類必須繼承 UDF 類
  • 必須實現(xiàn) evaluate 方法,hive 會根據(jù)反射機制找到這個方法,實現(xiàn)相應(yīng)邏輯

實現(xiàn) MD5 hive udf 函數(shù)注冊

import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hive.ql.exec.UDF;

import java.security.MessageDigest;

public class MD5 extends UDF {

    public String evaluate (final String str) {
        if (StringUtils.isBlank(str)){
            return "";
        }
        String digest = null;
        StringBuffer buffer = new StringBuffer();
        try {
            MessageDigest digester = MessageDigest.getInstance("md5");
            byte[] digestArray = digester.digest(str.getBytes("UTF-8"));
            for (int i = 0; i < digestArray.length; i++) {
                buffer.append(String.format("%02x", digestArray[i]));
            }
            digest = buffer.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return digest;
    }
    public static void main (String[] args ) {
        MD5 md5 = new MD5();
        System.out.println(md5.evaluate("   "));
    }
}

函數(shù)注冊語句:

CREATE FUNCTION dna_code AS 'hive.udf.utils.DnaCode' USING JAR ‘具體 jar 包位置’
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容