如果hive中没有你需要的函数,需要开发用户自定义函数(UDF),可以按照如下步骤:
以下步骤为本人开发now() 函数:
1)创建一个java工程(current_date)
2)pom文件引入依赖(如果不会,可以参考之前的博文:博文)
-
<dependency>
-
<groupId>org.apache.hive</groupId>
-
<artifactId>hive-exec</artifactId>
-
<version>1.1.0-cdh5.4.2</version>
-
</dependency>
3)创建一个类 (UDFGetCurrentDate),比如我的包路径是com.xxxx.udf
4) 类继承UDF并且实现evaluate()方法
-
package com.xxxx.udf;
-
-
-
import java.util.Date;
-
import java.sql.Timestamp;
-
import org.apache.hadoop.hive.ql.exec.UDF;
-
-
-
public class UDFGetCurrentDate extends UDF {
-
-
public Timestamp evaluate() {
-
Date date = new Date();
-
Timestamp current_date = new Timestamp(date.getTime());
-
return current_date;
-
}
-
-
}
5) 打成jar包上传到服务器, 如:/opt/module/jars/udf.jar
6)将jar包添加到hive的classpath
hive (default)> add jar /opt/module/jars/udf.jar;
7)创建临时函数与开发好的java class关联
hive (default)> create temporary function now as "com.xxxx.udf.UDFGetCurrentDate";
也可以永久加入hive的函数库!!!!
1)在 hive-site.xml 文件中添加:
-
<property>
-
<name>hive.aux.jars.path</name>
-
<value>file:///你的路径/你的jar包名字.jar(多个以逗号隔开)</value>
-
</property>
2)永久注册
hive (default)>create function now AS 'com.xxxx.udf.UDFGetCurrentDate';
如图:
阅读(2671) | 评论(0) | 转发(0) |