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
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.函数可以创建临时的和永久的
以上纯属个人见解,如有问题请联系本人!