一、UDF
1.UDF是一个简单的函数,可以用于我们的hive仓库,可以自定义内容,方便我们hive仓库的使用,提高我们的效率。
2.UDF、UDAF、UDTF
UDF:一对一 继承UDF 重写evaluate方法(实现传入的参数,并且封装了很多的方法)。
UDAF:多对一
UDTF:一对多
二、UDF使用
1.创建UDF自定义函数
package com.simple.test;
import org.apache.hadoop.hive.ql.exec.UDF;
public class TestUdf extends UDF{
public String evaluate(String input){
if(input==null){
return null;
}
//由大写转化为小写
return input.toLowerCase();
}
}
2.配置相应的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Test</groupId>
<artifactId>Test</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--添加hive依赖-->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
</project>
3.打成jar包并上传到linux集群上
4.将集群中的jar包添加到hive仓库中
add jar 上传j后ar包的绝对路径;
例如:add jar /opt/software/jars/UDF.jar;
5.在hive中创建属于我们自己的函数
create temporary function 函数名 as "项目包名.类名";
例如:create temporary function bws as "com.simple.test.TestUdf";
当hive退出时,函数也将消失
6.这样的话我们找个有对应数据的表,使用函数执行
例如:查看语句
select name,bws(name) from table;
7.以上叙述自定义函数是临时的,也可以创建永久的
create function 函数名 as "项目包名.类名" using jar 上传j后ar包的绝对路径;
例如:create function bws as "com.simple.test.TestUdf" using jar /opt/software/jars/UDF.jar;
8.查看函数是否存在
show functions;