首页 > 其他 > 详细

Hive的UDF实现详解

时间:2014-11-19 22:14:54      阅读:260      评论:0      收藏:0      [点我收藏+]

Hive自身查询语言HQL能完成大部分的功能,但遇到特殊需求时,需要自己写UDF实现。以下是一个完整的案例。

1、eclipse中编写UDF

①项目中加入hive的lib下的所有jar包和Hadoop中share下hadoop-common-2.5.1.jar(Hadoop目前最新版本2.5.1)。
②UDF类要继承org.apache.hadoop.hive.ql.exec.UDF类,类中要实现evaluate。 当我们在hive中使用自定义的UDF的时候,hive会调用类中的evaluate方法来实现特定的功能
③导出项目为jar文件。
注:项目的jdk与集群的jdk要一致。
具体例子:
<span style="font-family: Arial, Helvetica, sans-serif;">package com.zx.hive.udf;
</span>
<span style="font-family: Arial, Helvetica, sans-serif;">import org.apache.hadoop.hive.ql.exec.UDF;</span>
public class UdfTestLength extends UDF{

    public Integer evaluate(String s)
    {
        if(s==null)
        {
            return null;
        }else{
            return s.length();
        }
    }
}
将上面的类打成jar的形式,我使用eclipse直接导出为test-udf.jar包,然后放在/root目录中。

(转载请注明,更多内容见:http://blog.csdn.net/hwwn2009/article/details/41289197

2、自定义函数调用过程

①添加jar包(在hive命令行里面执行)
hive> add jar /root/test-udf.jar;

②创建临时函数 ,hive命令行关闭后,即失效。
hive> create temporary function testlength as ‘com.zx.hive.udf.UdfTestLength‘;

③调用
hive> select id, name, testlength(name) from student;

④将查询结果保存到HDFS中

hive> create table result row format delimited fields terminated by ‘\t‘ as select id, testlength(nation) from student;

(转载请注明,更多内容见:http://blog.csdn.net/hwwn2009/article/details/41289197

Hive的UDF实现详解

原文:http://blog.csdn.net/hwwn2009/article/details/41289197

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!