Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1063115
  • 博文数量: 165
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1346
  • 用 户 组: 普通用户
  • 注册时间: 2016-03-11 14:13
个人简介

狂甩酷拽吊炸天

文章分类

全部博文(165)

文章存档

2024年(1)

2023年(1)

2022年(3)

2021年(4)

2020年(17)

2019年(37)

2018年(17)

2017年(35)

2016年(50)

分类: LINUX

2019-11-01 18:26:58

如果hive中没有你需要的函数,需要开发用户自定义函数(UDF),可以按照如下步骤:
以下步骤为本人开发now() 函数:
1)创建一个java工程(current_date)
2)pom文件引入依赖(如果不会,可以参考之前的博文:博文

点击(此处)折叠或打开

  1. <dependency>
  2.             <groupId>org.apache.hive</groupId>
  3.             <artifactId>hive-exec</artifactId>
  4.             <version>1.1.0-cdh5.4.2</version>
  5.         </dependency>

3)创建一个类 (UDFGetCurrentDate),比如我的包路径是com.xxxx.udf
4) 类继承UDF并且实现evaluate()方法

点击(此处)折叠或打开

  1. package com.xxxx.udf;


  2. import java.util.Date;
  3. import java.sql.Timestamp;
  4. import org.apache.hadoop.hive.ql.exec.UDF;


  5. public class UDFGetCurrentDate extends UDF {

  6.     public Timestamp evaluate() {
  7.         Date date = new Date();
  8.         Timestamp current_date = new Timestamp(date.getTime());
  9.         return current_date;
  10.     }

  11. }
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 文件中添加:

点击(此处)折叠或打开

  1. <property>
  2.     <name>hive.aux.jars.path</name>
  3.     <value>file:///你的路径/你的jar包名字.jar(多个以逗号隔开)</value>
  4. </property>

2)永久注册

hive (default)>create function now AS 'com.xxxx.udf.UDFGetCurrentDate';

如图:




阅读(2671) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~