hive udf 函数:MD5

利用 hive 做数据查询或者分析的时候,原生的 hive 函数可能无法满足我们的需求,这时候我们可以自定义 hive udf,函数;

自定义 hive udf 函数,有以下两点要求:

  • 函数类必须继承 UDF 类
  • 必须实现 evaluate 方法,hive 会根据反射机制找到这个方法,实现相应逻辑

实现 MD5 hive udf 函数注册

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("   "));
    }
}

函数注册语句:

CREATE FUNCTION dna_code AS 'hive.udf.utils.DnaCode' USING JAR ‘具体 jar 包位置’

你可能感兴趣的:(hive udf 函数:MD5)