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

【hadoop】第一个UDF小例子 此博文包含图片 (2013-09-23 19:19:13)

时间:2017-04-27 19:52:04      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:包含   import   jar包   add   项目   其他   exp   image   creat   

之前做过一个例子,但是有问题,中间因为其他事情给耽搁了,就忘记了,今天帮同事查数据,要写一个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)

标签:包含   import   jar包   add   项目   其他   exp   image   creat   

原文地址:http://www.cnblogs.com/qyb-bk/p/6775455.html

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