自定义函数(UDF) 将字符串转换成日期

                                     自定义函数(UDF)把字符串转换成日期

创建类继承UDF

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

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

@Description(name="to_date",
			value="this is my first udf!",
			extended="For example : select to_date('2018/07/02 17:28:59');")
/*
 * 将字符串转换成日期
 */

public class ToData extends UDF {
	/*
	 * 计算
	 */
	public Date evaluate(String date) {
		try{
			SimpleDateFormat sdf = new SimpleDateFormat();
			sdf.applyPattern("yyyy/MM/dd HH:mm:ss");
			return sdf.parse(date);
		}catch(ParseException e) {
			e.printStackTrace();
		}
		return new Date();
	}
	
}


将函数打成jar包

eclipse ->BuildPath->Configure->BuildPath->Libraries->Add External JARS->hive安装的目录/hive/lib/把所有的jar包加进去


通过hive命令将jar添加到hive的类路径

hive (default)> add jar /home/hadoop/ToDate.jar;


注册函数

hive (default)> create temporary function to_date as 'com.jhy.hive.hive2.ToData';


调用函数

select to_date('xxx');

hive (default)> create temporary function to_date as 'com.jhy.hive.hive2.ToData';
OK
Time taken: 0.126 seconds
hive (default)> desc function to_date;
OK
tab_name
this is my first udf!
Time taken: 0.284 seconds, Fetched: 1 row(s)
hive (default)> desc function extended to_date;
OK
tab_name
this is my first udf!
For example : select to_date('2018/07/02 17:28:59');
Time taken: 0.008 seconds, Fetched: 2 row(s)
hive (default)> select to_date('2018/07/02 17:28:59');
OK
_c0
{"fasttime":1530523739000,"cdate":null}
Time taken: 2.202 seconds, Fetched: 1 row(s)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值