`

Hive UDF编程

    博客分类:
  • Hive
 
阅读更多

在该类中加入 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);

重新编译、部署

 

 

分享到:
评论

相关推荐

    hive UDF需要jar包

    综上所述,Hive UDF的开发和使用涉及到Java编程、Hive和Hadoop的库依赖管理、函数注册以及在实际查询中的应用。了解和掌握这些知识点,能够帮助开发者更好地利用Hive UDF解决复杂的数据处理问题。

    HIve UDF 说明书

    UDF的引入极大地扩展了HiveQL的功能,使得用户可以利用编程语言(通常是Java)来实现特定的数据处理逻辑。 在Hive UDF的使用说明书中,包含了关于Hive的内置操作符、内置函数、聚合函数、表生成函数、以及自定义UDF...

    dataiku hive udf

    在大数据处理领域,Hive是一个非常重要的组件,它提供了一个基于Hadoop的数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并...无论是初学者还是经验丰富的开发人员,都能从中受益,增强自己的Hive编程能力。

    Hive的Udf函数进行数据脱敏

    ADD JAR /path/to/your/hiveUDF.jar; CREATE TEMPORARY FUNCTION mask AS 'com.yourpackage.MaskingUDF'; ``` 4. **使用UDF**: 注册完成后,你可以在查询中直接使用`mask`函数。假设我们有一个包含手机号码的表`...

    Hive编程指南+HIVE从入门到精通+Hive高级编程+Apache Oozie

    4. **视图与UDF**: 视图简化了复杂查询,而用户自定义函数(UDF)允许用户扩展Hive的功能。 5. **Hive与Hadoop的交互**: 了解如何在Hadoop集群上部署和配置Hive,以及如何通过HDFS交互数据。 **Hive从入门到精通** ...

    nzrs-hive-udf:NZRS 中使用的 Hive UDF 集

    1. **Hive UDF 开发**:了解如何创建自定义的 Hive 函数,包括编写 Java 类,实现特定的接口(如 `HiveUDF`, `HiveUDAF`, 或 `HiveUDAFFinalizer`),以及使用 Hive 提供的注解(如 `@Description` 和 `@...

    pig-hive编程指南

    《Pig-Hive编程指南》 在大数据处理领域,Pig和Hive是Apache Hadoop生态系统中的重要组件,主要用于大规模数据处理和分析。这两者都提供了高级的数据抽象和查询语言,使得非Java背景的开发者也能方便地进行...

    大数据开发核心技术-大数据仓库Hive精讲 第2课 深入使用 共48页.pdf

    大数据开发核心技术 - 大数据仓库Hive精讲 第1课 初识入门 第2课 深入使用 第3课 高级进阶————————————————课程大纲1、Hive表的创建2、Hive数据类型3、Hive数据迁移4、Hive常见查询5、HiveUDF编程

    Hive编程指南(带书签)

    5. **Hive进阶功能**:包括分区、桶、视图、联接、子查询、UDF(用户自定义函数)、UDAF(用户自定义聚合函数)和UDTF(用户自定义表生成函数)等高级特性。 6. **Hive性能优化**:如何通过优化HQL、选择合适的存储...

    Hive编程指南 PDF 中文高清版

    - **可扩展性**:Hive支持自定义函数,如用户定义函数(UDF)、用户定义聚合函数(UDAF)和用户定义表生成函数(UDTF),这些函数允许用户在MapReduce作业中执行特定的计算任务。 - **存储格式灵活性**:Hive支持多种存储...

    Hive 编程指南(书签版)

    **Hive编程指南(书签版)概述** Hive是Apache软件基金会开发的一个大数据处理工具,主要用于处理和分析存储在Hadoop分布式文件系统(HDFS)中的大规模数据集。Hive提供了一个基于SQL的查询语言(HQL),使得非专业...

    Hive编程指南(扫描版)

    9. **UDF(用户自定义函数)**: Hive允许用户编写自己的函数,扩展其功能,满足特定的数据处理需求。 10. **优化器**: Hive包含一个查询优化器,它负责转化HiveQL查询到MapReduce作业,通过成本基础优化选择最佳...

    Hive编程指南-2013.12.pdf

    除了基本功能,Hive还支持UDF(用户自定义函数)、UDAF(用户自定义聚合函数)和UDTF(用户自定义表生成函数),允许用户扩展HQL的功能。此外,Hive on Tez或Hive on Spark等执行引擎的引入,进一步提高了查询性能。...

    Hive编程指南

    6. **存储过程(UDF, UDAF, UDTF)**:Hive支持用户自定义函数,包括单行函数(UDF)、多行聚合函数(UDAF)和多行返回函数(UDTF),扩展Hive的功能。 7. **MapReduce**:Hive查询的执行引擎默认是基于MapReduce的,它将...

    设计开发 Hive 编程指南 完整版

    《设计开发 Hive 编程指南 完整版》是一份详尽的教程,旨在帮助开发者深入理解和高效使用 Apache Hive 进行大数据处理。Hive 是一个基于 Hadoop 的数据仓库工具,可将结构化的数据文件映射为一张数据库表,并提供 ...

    hive自定义函数demo

    - **选择编程语言**:Java是最常见的选择,因为Hive本身是用Java编写的,但也可以使用其他JVM语言,如Scala。 - **实现接口**:为特定的UDF类型实现相应的Hive接口,例如`org.apache.hadoop.hive.ql.exec.UDF` ...

Global site tag (gtag.js) - Google Analytics