package com.huawei.con.UDFTest;
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
@Description(name="myadd",
value="myadd(int a,int b)====>return a+b"+
"",
extended = "Example:\n"
+" myadd(1,2)===>3 \n")
public class AddUDF extends UDF{
public int evaluate(int a,int b){
return a+b;
}
public int evalue(int a,int b,int c){
return a+b+c;
}
}
前面的description是在hive中对函数的描述,也就是$hive>desc function myadd();显示出来的内容。
编写UDF只需要重写evaluate函数就可以了。
对应的pom.xml
<?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>com.huawei.cn</groupId>
<artifactId>HiveDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
</project>
在hive中执行的命令
hive>add jar /home/HiveDemo-1.0-SNAPSHOT.jar ;
hive>CREATE TEMPORARY FUNCTION myadd as 'com.huawei.con.UDFTest.AddUDF';
hive>desc function myadd ;