Hive:创建和使用UDF

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
在这里插入图片描述
3.点击next,并选择导出路径和文件名称
在这里插入图片描述

得到桌面的jar包:func_to_upper.jar

4.上传jar文件到HDFS中

1.首先将当前的jar包上传到Linux中的文件中
在这里插入图片描述
在这里插入图片描述

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');

在这里插入图片描述

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

3.创建临时函数

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

在这里插入图片描述

测试成功

6.查看和删除函数

查看所有函数:show functions;se

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

重新加载函数:reload function;

删除函数:

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

在这里插入图片描述

7.总结

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值