在该类中加入 evaluate 方法
"evaluate" should never be a void method. However it can return "null" if * needed.
public class UDFLastDay extends UDF{ private final SimpleDateFormat inputFormatter = new SimpleDateFormat("yyyy-MM-dd"); private final SimpleDateFormat outFormatter = new SimpleDateFormat("yyyy-MM-dd"); private final Calendar calendar = Calendar.getInstance(); Text result = new Text(); // 2015-03-01 ==> 2015-03-31 public Text evaluate(Text input) { if(null == input || StringUtils.isBlank(input.toString())) { return null; } try { calendar.setTime(inputFormatter.parse(input.toString())); int lastDate = calendar.getActualMaximum(Calendar.DATE); //获得到月份最大的天数 calendar.set(Calendar.DATE, lastDate); result.set(outFormatter.format(calendar.getTime())); return result; } catch (ParseException e) { e.printStackTrace(); return null; } } }
- 打包放到 linux 某个目录下 例如: /home/hadoop/software/lib/udf.jar
- 如何将UDF加入到hive中使用?
方式一:(当前session有效)
add jar /home/hadoop/software/lib/udf.jar ;
create temporary function getLastDay as 'com.cloudyhadoop.bigdata.udf.UDFLastDay';
show functions;
select empno, ename, hiredate, getLastDay(hiredate) last_day from emp;
方式二:(全局有效)
hive-site.xml中添加如下配置信息:
<property>
<name>hive.aux.jars.path</name>
<value>file:///home/hadoop/software/lib/udf.jar</value>
</property>
启动hive之后,就不需要再:add jar /home/hadoop/software/lib/udf.jar ;
create temporary function getLastDay as 'com.cloudyhadoop.bigdata.udf.UDFLastDay';
temporary: current session, 退出或者重启之后函数丢失
如何做到全局有效?
1、https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-Create/DropFunction
CREATE FUNCTION [db_name.]function_name AS class_name
[USING JAR|FILE|ARCHIVE 'file_uri' [, JAR|FILE|ARCHIVE 'file_uri'] ];
2、修改源代码
https://github.com/cloudera/hive/blob/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
registerUDF("getLastDay", UDFLastDay.class, false);
重新编译、部署
相关推荐
· 获得创建用户自定义函数(UDF)的最佳方法。 · 了解应该使用的Hive模式以及应该避免的反模式。 · 将Hive和其他数据处理程序进行整合。 · 对于NoSQL数据库和其他数据存储使用存储控制器。 · 学习在亚马逊弹性...
· 获得创建用户自定义函数(UDF)的最佳方法。 · 了解应该使用的Hive模式以及应该避免的反模式。 · 将Hive和其他数据处理程序进行整合。 · 对于NoSQL数据库和其他数据存储使用存储控制器。 · 学习在亚马逊弹性...
hiveUDF 程序依赖程序包 groupID org.apache.hive hive-exec hive-common 同时需要hadoop的hadoop-common hiveUDF使用 add jar /home/hadoop/styhadoop-1.0-SNAPSHOT.jar; CREATE TEMPORARY FUNCTION decode AS '...
(和Hive UDF) (Node.js或浏览器) 版本号 v1.11.1 在测试集中更新GSA版本 v1.11.0 添加Google搜索应用 v1.10.0 添加适用于iOS / Android的Microsoft Edge(基于Chromium),Edge v1.9.0 添加Android 9 v1.8.0...
UDF(User-Defined-Function) ⽤于接收单个数据⾏,并产⽣⼀个数据⾏作为输出。 UDAF(User-Defined Aggregation Function) ⽤于接收多个数据⾏,并产⽣⼀个数据⾏作为输出。 UDTF(User-Defined Table-Generating ...
Hive及Hadoop群 11.1 Hive 11.1.1 安装与配置Hive 11.1.2 查询的示例 11.1.3 深入HiveQL 11.1.4 Hive小结 11.2 其他Hadoop 相关的部分 11.2.1 HBase 11.2.2 ZooKeeper 11.2.3 Cascading 11.2.4 Cloudera ...
用Pig编程10.1 像Pig 一样思考10.1.1 数据流语言10.1.2 数据类型10.1.3 用户定义函数10.2 安装Pig10.3 运行Pig10.4 通过Grunt 学习Pig Latin10.5 谈谈Pig Latin10.5.1 数据类型和schema10.5.2 表达式和函数10.5.3 ...
20110.9 小结 206第11章 Hive及Hadoop群 20711.1 Hive 20711.1.1 安装与配置Hive 20811.1.2 查询的示例 21011.1.3 深入HiveQL 21311.1.4 Hive小结 22111.2 其他Hadoop相关的部分 22111.2.1 HBase 22111.2.2 ...
10.自定义函数UDF 11.分布式SQL引擎(spakr-sql和Spark ThriftServer) 12.Catalyst 优化器 第四章、离线综合实战 1.综合实战概述(需求、调研、业务) 2.环境搭建(大数据环境和应用开发环境) 3.项目初始化(工具...
206第11章 Hive及Hadoop群 20711.1 Hive 20711.1.1 安装与配置Hive 20811.1.2 查询的示例 21011.1.3 深入HiveQL 21311.1.4 Hive小结 22111.2 其他Hadoop相关的部分 22111.2.1 HBase 22111.2.2 ...
使用Spark-2.1实现自定义UDF,UDAF,Partitioner 使用数据框(ComplexSchema,DropDuplicates,DatasetConversion,GroupingAndAggregation) 使用数据集处理Parquet文件按特定列对数据进行分区并按分区进行存储使用...