登 录
注 册
< 大 数 据
Flink
Hadoop
Spark
Hive
HBase
Kafka
其他框架
生产中常见问题
Hive压缩和存储
通过JDBC访问
企业级调优(一)
企业级调优(二)
企业级调优(三)
UDF实战
Hive调优参数大全
热门推荐>>>
中台架构
中台建设与架构
Hadoop
源码分析-NN启动(三)
HBase
HBased对接Hive
Linux
Nginx高可用
Python
数据导出工具
Flink
3分钟搭建Flink SQL测试环境
Kafka
Kafka对接Flume
深度学习
卷积神经网络
数据结构与算法
选择合适的算法
MySQL
数据备份恢复
计算机系统
信号量同步线程
其他框架
Azkaban Flow1.0与2.0
ClickHouse
表引擎-其他类型
技术成长
最好的职业建议
精选书单
技术成长书单—机器学习
技术资讯
数据在线:计算将成为公共服务
开发工具
IntelliJ IDEA 20年发展回顾(二)
系统工具
Mac命令行工具
虚拟化
内存虚拟化概述
云原生
云原生构建现代化应用
云服务
一文搞懂公有云、私有云...
Java
Spring Boot依赖注入与Runners
Go
Go函数与方法
SQL
SQL模板
安全常识
一文读懂SSO
当前位置:
首页
>>
Hive
>>
UDF实战
UDF实战
2020-10-08 20:44:09 星期四 阅读:2059
在公司使用hive时比较复杂的操作或者反复使用的操作就可以自定义一个函数来简化操作,节省开发成本。 注:hive版本1中不能用开窗函数,hive版本2中可以用开窗函数。 ####欲实现功能 时间戳转换为标准时间格式的String字符串 环境准备 把hive的jar包和hadoop的jar包的绝对路径添加到.bash_profile文件里 ####编写Java代码 ``` import java.sql.Date; import java.text.SimpleDateFormat; //想做自定义函数必须加载UDF包 import org.apache.hadoop.hive.ql.exec.UDF; public class TimeFormat extends UDF { //必须复写evaluate方法,方法名固定 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) ; } } ``` ####编译打包 ```bash /usr/local/src/jdk1.7.0_25/bin/javac TimeFormat.java vim main.mf #Manifest-Version: 1.0 /usr/local/src/jdk1.7.0_25/bin/jar cvfm TF.jar main.mf TimeFormat.class ``` ####注册函数并测试 ``` hive> add jar /home/hadoop/TF.jar; # 创建临时函数(名字随便起)as后面对应jar包中的类名 hive> CREATE TEMPORARY FUNCTION MyTimeFormat AS "TimeFormat"; # 测试 hive> SELECT MyTimeFormat(1524536656909) ; OK 2018-04-24 10:04:909 Time taken 1.025 seconds ```