IDEA下写hive的udf(踩坑教程)

配置maven的过程网上有很多这里就不写了。
UDF
用户自定义函数(user defined function)–针对单条记录。
创建函数流程
1、自定义一个Java类
2、继承UDF类
3、重写evaluate方法 (必须重写这个方法)
4、打成jar包
6、在hive执行add jar方法
7、在hive执行创建模板函数
8、hql中使用

package UDFDemo;//注意如果这里有包的等会儿会用到
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

import java.math.BigInteger;

public class int2inetaddress extends UDF{
    //重写evaluate方法
  //这里要注意,如果数据库的类型是bigint等还是要用text类型
    public Text evaluate(Text input){
        BigInteger one =  new BigInteger(input.toString());
        long intinput = one.longValue();
        String ipStr =
                String.format("%d.%d.%d.%d",
                        (intinput & 0xff),
                        (intinput >> 8 & 0xff),
                        (intinput >> 16 & 0xff),
                        (intinput >> 24 & 0xff));
        return new Text(ipStr);
    }
}

配置MAVEN的可以参考以下,将以下内容的 放入自己的maven文件当中




    4.0.0

    cupid
    int2inetaddressUDF
    1.0-SNAPSHOT



    
        UTF8
        
        2.5.0-cdh5.2.0
        1.1.0-cdh5.8.0
    


    
    
        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-shade-plugin
                1.4
                
                    
                        package
                        
                            shade
                        
                        
                            
                                
                                    *:*
                                    
                                        META-INF/*.SF
                                        META-INF/*.DSA
                                        META-INF/*.RSA
                                    
                                
                            

                            
                                
                                    META-INF/spring.handlers
                                
                                
                                    com.neu.hive.UDF.ToUpperCaseUDF
                                
                                
                                    META-INF/spring.schemas
                                
                            
                        
                    
                
            
        
    

使用maven打包,打包过程可以参考视频。

打包后的文件在你的项目的target当中,上传那个几kb的original-int2inetaddressUDF-1.0-SNAPSHOT.jar那个文件,上传到服务器上随便一个目录

然后进入hive

添加jar包

add jar 你的文件路径/original-int2inetaddressUDF-1.0-SNAPSHOT.jar;

可以用list jars;查看是否添加成功

create temporary function myudf as "UDFDemo.int2inetaddress";

然后就可以用了

select myudf(XXX) from xxxx

可以参考这里的视频:
http://www.cnblogs.com/simuhunluo/p/7756250.html

你可能感兴趣的:(IDEA下写hive的udf(踩坑教程))