欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hive:创建和使用UDF

程序员文章站 2022-04-29 08:03:56
...

1.声明

当前内容主要用于本人学习和复习,当前内容为创建UDF(User-Defined Function)和使用当前的Hive加载当前的jar文件并使用

当前内容来源于:Apache Hive Essentials书籍

2.创建一个基本的demo(将单词变成大写)

1.创建项目并使用pom依赖

<dependencies>
	<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
	<dependency>
		<groupId>org.apache.hive</groupId>
		<artifactId>hive-jdbc</artifactId>
		<version>2.3.7</version>
	</dependency>
	<dependency>
		<groupId>org.apache.hive</groupId>
		<artifactId>hive-exec</artifactId>
		<version>2.3.7</version>
	</dependency>
</dependencies>

注意当前的版本必须和你运行的Hive版本一致

2.创建一个类并继承UDF

package com.hy.hive.func;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

public class ToUpper extends UDF {
	// evaluate() is the only necessary function to overwrite

	public Text evaluate(Text input) {
		if (input == null)
			return null;
		return new Text(input.toString().toUpperCase());
	}

}

3.打包当前的ToUpper为jar文件

1.选中需要单独打包的java,使用右键Export:

2.选中export的类型为:JAR file
Hive:创建和使用UDF
3.点击next,并选择导出路径和文件名称
Hive:创建和使用UDF

得到桌面的jar包:func_to_upper.jar

4.上传jar文件到HDFS中

1.首先将当前的jar包上传到Linux中的文件中
Hive:创建和使用UDF
Hive:创建和使用UDF

2.开始上传到hdfs中(一个/udf文件夹中)

hadoop fs -mkdir /udf
 hadoop fs  -put func_to_upper.jar  /udf

5.创建并使用函数

1.进入hive中开始创建函数

create function toUpper
as 'com.hy.hive.func.ToUpper' -- 这里as为当前的jar包中的类全名
using jar 'hdfs:///udf/func_to_upper.jar' -- useing jar表示使用jar包的路径

2.使用函数toUpper

select ToUpper('admin');
select toUpper('admin');

Hive:创建和使用UDF

结果发现当前的函数是不区分大小写的!

3.创建临时函数

create function tmptoUpper
as 'com.hy.hive.func.ToUpper' 
using jar 'hdfs:///udf/func_to_upper.jar' ;

Hive:创建和使用UDF

测试成功

6.查看和删除函数

查看所有函数:show functions;se

查看函数: SHOW FUNCTIONS LIKE 'toUpper';

重新加载函数:reload function;

删除函数:

drop function if exists toUpper;
drop TEMPORARY function if exists tmptoUpper;

Hive:创建和使用UDF

7.总结

1.当前的Hive中的函数需要通过使用jar包的方式创建和使用,需要指定使用的类名和使用的jar包

2.函数可以创建临时的和永久的

以上纯属个人见解,如有问题请联系本人!

相关标签: Hive