首先创建工程编写UDF 代码,示例如下:

1、 新建Maven项目 udf

本机Hadoop版本为2.7.7, Hive版本为1.2.2,所以选择对应版本的jar ,其它版本也不影响编译。

2、 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>com.hive</groupId>
<artifactId>udf</artifactId>
<version>1.0.0</version> <dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.7</version>
</dependency> <dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.2.2</version>
</dependency> </dependencies> <build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>

3、 DateFormatConvert.java

package com.hive.udf;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text; /**
* Hive 日期格式转换函数
*
* @author Logan
* @createDate 2019-04-30
* @version 1.0.0
*
*/
public class DateFormatConvert extends UDF { /**
* 日期格式转换函数
*
* @param text 输入日期文本
* @param srcFormat 源格式
* @param destFormat 目标格式
* @return
* @throws ParseException
*/
public Text evaluate(Text text, Text srcFormat, Text destFormat) throws ParseException {
if (null == text || null == srcFormat || null == destFormat) {
return text;
} SimpleDateFormat srcDateFormat = new SimpleDateFormat(srcFormat.toString());
SimpleDateFormat destDateFormat = new SimpleDateFormat(destFormat.toString()); Date date = srcDateFormat.parse(text.toString());
String destDateString = destDateFormat.format(date); return new Text(destDateString);
} }

4、 打包上传到 /root/files/udf.jar

5、添加 用户自定义函数

add jar /root/files/udf.jar;
create temporary function udf_date_format_convert as 'com.hive.udf.DateFormatConvert';

6、 使用

select udf_date_format_convert(log_time, 'yyyyMMddHHmmss', 'yyyy-MM-dd HH:mm:ss') from tb_logs;

表 tb_logs 数据如下:

log_time
20190529072650
20190529072730
20190529072812

使用UDF 函数输出结果如下:

2019-05-29 07:26:50
2019-05-29 07:27:30
2019-05-29 07:28:12

Hive UDF 用户自定义函数 编程及使用

.

最新文章

  1. Gephi可视化(二)——Gephi Toolkit叫板Prefuse
  2. Mysql中mysqldump命令使用详解
  3. Linux每天定时重启Tomcat服务
  4. JAVA 数组实例-求学生成绩的最大成绩,获取数组中的最大值、最小值
  5. 场景2 nginx 错误日志格式:
  6. Struts2 四、Struts2 处理流程
  7. python --- mulitprocessing(多进程)模块使用
  8. tensorflow 如何读取npy文件里的参数
  9. 解决Window安全中心对Kitematic-0.17.3-Ubuntu.zip提示病毒,但无法删除的问题。
  10. BZOJ.5288.[AHOI/HNOI2018]游戏(思路 拓扑)
  11. 上传znbsite
  12. EasyUI 的 combotree 加载数据后折叠起来,并且只允许单击子节点的写法
  13. 学以致用十一-----centos7.2+python3+YouCompleteMe走过的坑
  14. django-连接数据库及创建表,已存字段的增删
  15. Appium+python自动化17-启动iOS模拟器APP源码案例
  16. jquery微博实例
  17. Kafka集群中 topic数据的分区 迁移到其他broker
  18. c++11 实现RAII特性
  19. 远程调用之RMI、Hessian、Burlap、Httpinvoker、WebService的比较
  20. Qt 学习之路 2(57):可视化显示数据库数据

热门文章

  1. 使用bind配置DNS服务(CentOS 6.5)
  2. unity接入讯飞教程
  3. java 命令学习总结
  4. java线程中的 sleep() wait() yield()
  5. 使用request与正则表达式爬取bangumi动画排行榜
  6. git clone时的各种报错汇总
  7. Bitmap图片查看器
  8. dubbo-admin网页管理控制台
  9. Java集合篇一:ArrayList
  10. Java中Date()类 日期转字符串、字符串转日期的问题(已解决)