Hive函数

自定义函数

自定义函数包括三种:UDF、UDAF、UDTF。

UDF(User-Defined-Function) 一进一出

UDAF(User-Defined Aggregation Function) 聚集函数,多进一出(Count\Max\Min)

UDTF(User-Defined Table-Generating Function) 一进多出,如lateral view explore()

使用方式,在HIVE绘画中add自定义函数的jar文件,然后创建function继而使用函数。

UDF开发

  1. UDF函数可以直接应用于SELECT语句,对查询结构做格式化处理后,再输出内容。

  2. 编写UDF函数的时间需要注意以下几点:

    1. 自定义UDF需要继承org.apache.hadoop.hive.ql.UDF
    2. 需要实现evaluate函数,evaluate函数支持重载
  3. 步骤



    4.0.0

    com.avcdata
    boot2hive2
    1.0-SNAPSHOT

    
        2.1.1
    

    
        
            
                org.apache.maven.plugins
                maven-assembly-plugin
                2.4
                
                    
                        jar-with-dependencies
                    
                    
                        
                            com.avcdata.Main
                        
                    
                
                
                    
                        package
                        
                            single
                        
                    
                
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    8
                    8
                
            
        
    
    
        
        
            org.apache.hive
            hive-jdbc
            1.2.1
        

        
        
            org.apache.hadoop
            hadoop-common
            2.6.0
        
        
            org.apache.hive
            hive-exec
            2.1.1
        

        
        
            com.alibaba
            fastjson
            1.2.49
        


    
    
        
            central
            Central Repository
            http://repo.maven.apache.org/maven2
            default
            
                false
            
        
    


Java代码

package com.avcdata;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

public final class TuoMin extends UDF {
    public Text evaluate(final Text s) {
        if (s == null) {
            return null;
        }
        String str = s.toString();
        str = str.substring(0, 1) + "***" + str.substring(str.length() - 1, str.length());
        return new Text(str);
    }
}
mvn package

将jar包上传至hive客户端

scp boot2hive2-1.0-SNAPSHOT-jar-with-dependencies.jar root@node3:~

在hive中添加jar包

> add jar /root/boot2hive2-1.0-SNAPSHOT-jar-with-dependencies.jar

创建临时函数

CREATE TEMPORARY FUNCTION tuomin AS 'com.avcdata.TuoMin';

使用临时函数

SELECT id
     , tuomin(name)
     , name
     , likes
     , address 
  FROM psn1;

删除临时函数

DROP TEMPORARY FUNCTION tuomin;

你可能感兴趣的:(Hive函数)