hadoop第一个UDF小例子 此博文包含图片(2013-09-23 19:19:13)
Posted 蚂蚁总督
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop第一个UDF小例子 此博文包含图片(2013-09-23 19:19:13)相关的知识,希望对你有一定的参考价值。
之前做过一个例子,但是有问题,中间因为其他事情给耽搁了,就忘记了,今天帮同事查数据,要写一个UDF,又发现了同一个问题,最终解决了。下边整理一下我的小例子,由于hive表中存放的时间是Long型的字符串,需要将其转化成时间:
1、首先创建一个java项目,根据需要命名。
2、导入hive需要的jar包:
3、在项目中创建一个类,extends UDF:
package cn.hive.udf;
import java.sql.Date;
import java.text.SimpleDateFormat;
import org.apache.hadoop.hive.ql.exec.UDF;
public class TimeFormat extends UDF {
public String evaluate(String num){
Date d=new Date(Long.decode(num));
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:MM:SS");
return sdf.format(d) ;
}
}
这里要注意的是方法的名称一定要定义成evaluate。
4、导出jar包:
选中TimeFormat类文件,右击export,选择jar file:
5、将jar包上传到服务器
6、准备数据,time为Long型数字的string类型的数据文件:
7、将jar加入到hive中:
hive> add jar /home/HelloUD.jar;
8、创建一个临时函数,指向上边编译的类
hive > create temporary function formatTime as \'cn.hive.udf.TimeFormat\';
10、可以调用这个函数了:
hive> select formatTime(time) from s_show;
11、调用完这个函数可以删掉
hive> drop temporary function formatTime ;
以上是关于hadoop第一个UDF小例子 此博文包含图片(2013-09-23 19:19:13)的主要内容,如果未能解决你的问题,请参考以下文章
VMware V12.0.1 专业版 + 永久密钥 此博文包含图片(2015-10-30 16:53:14)