码迷,mamicode.com
首页 > 其他好文 > 详细

Hive 10、Hive的UDF、UDAF、UDTF

时间:2016-02-24 22:36:39      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:

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

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

  UDAF(User- Defined Aggregation Funcation) 聚集函数,多进一出。Count/max/min

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

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

UDF

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

2、编写UDF函数的时候需要注意一下几点:

  a)自定义UDF需要继承org.apache.hadoop.hive.ql.UDF。

  b)需要实现evaluate函数,evaluate函数支持重载。

  例:写一个返回字符串长度的Demo:

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

public class GetLength extends UDF{
    public int evaluate(String str) {
        try{
            return str.length();
        }catch(Exception e){
            return -1;
        }
    }
}

3、步骤

  a)把程序打包放到目标机器上去;

  b)进入hive客户端,添加jar包:

hive> add jar /root/hive_udf.jar

  c)创建临时函数:

hive> create temporary function getLen as ‘com.raphael.len.GetLength‘;

  d)查询HQL语句:

hive> select getLen(info) from apachelog;
OK
60
29
87
102
69
60
67
79
66
Time taken: 0.072 seconds, Fetched: 9 row(s)

  e)销毁临时函数:

hive> DROP TEMPORARY FUNCTION getLen;

 

UDAF

 

UDTF

Hive 10、Hive的UDF、UDAF、UDTF

标签:

原文地址:http://www.cnblogs.com/raphael5200/p/5215337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!