大数据 java01 hive udf函数(手机号码脱敏)

Hive UDF

  • Hive UDF 函数
    • 1 POM 文件
    • 2.UDF 函数
    • 3 利用idea打包
    • 4 添加hive udf函数
      • 4.1 上传jar包到集群
      • 4.2 修改集群hdfs文件权限
      • 4.3 注册UDF
      • 4.4 使用UDF

Hive UDF 函数

1 POM 文件



    4.0.0

    填写自己的组织名称
    udf
    1.0-SNAPSHOT
    
        UTF8
        
        2.6.0-cdh5.13.3
        1.1.0-cdh5.13.3
    

    
        
        
            Apache Hadoop
            Apache Hadoop
            https://repo1.maven.org/maven2/
        
        
        
            cloudera
            cloudera
            https://repository.cloudera.com/artifactory/cloudera-repos/
        
    

    
        
        
            org.apache.hadoop
            hadoop-common
            ${hadoop.version}
        
        
        
            org.apache.hive
            hive-exec
            ${hive.version}
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.8
                    1.8
                
            
            
                maven-assembly-plugin
                
                    
                    
                        
                            
                        
                    
                    
                        jar-with-dependencies
                    
                
                
                    
                        make-assembly
                        package
                        
                            single
                        
                    
                
            
        
    



2.UDF 函数

package 填写自己的组织名称;

import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;

// 上传udf jar到集群 hdfs dfs -put udf-1.0-SNAPSHOT-jar-with-dependencies.jar /data/data_coe/data_asset/prod/db/tmp/udf/
// 修改文件权限 hdfs dfs -chmod -R 777 hdfs://idc-nn/data/data_coe/data_asset/prod/db/tmp/udf/
//注册udf函数 create function tmp.pul as '填写自己的组织名称.PhoneUnlookUdf' using jar 'hdfs://idc-nn/data/data_coe/data_asset/prod/db/tmp/udf/udf-1.0-SNAPSHOT-jar-with-dependencies.jar

public class PhoneUnlookUdf extends UDF {
//重写evaluate方法
    public String evaluate(String phone){
        if (phone.length() == 11){
            String res = phone.substring(0, 3) + "****" + phone.substring(7, phone.length());
            System.out.println(res);
            return res;
        } else {
            return phone;
        }

    }
}

3 利用idea打包

先点clean,在点package
大数据 java01 hive udf函数(手机号码脱敏)_第1张图片

4 添加hive udf函数

集群的某些问题,不能直接通过添加服务器上本地文件到hive增加udf;需要将文件上传到hdfs,然后定义udf函数。

4.1 上传jar包到集群

// 上传udf jar到集群 hdfs dfs -put udf-1.0-SNAPSHOT-jar-with-dependencies.jar /data/data_coe/data_asset/prod/db/tmp/udf/


4.2 修改集群hdfs文件权限

// 修改文件权限 hdfs dfs -chmod -R 777 hdfs://idc-nn/data/data_coe/data_asset/prod/db/tmp/udf/

4.3 注册UDF

//注册udf函数 create function tmp.pul as 'cn.mcd.com.PhoneUnlookUdf' using jar 'hdfs://idc-nn/data/data_coe/data_asset/prod/db/tmp/udf/udf-1.0-SNAPSHOT-jar-with-dependencies.jar

4.4 使用UDF

···
打开集群hive客户端:
select tmp.pul(phone) from tmp.tmp_order limit 3;
···

你可能感兴趣的:(hive,bigdata)