创建一个Maven项目
添加UDF依赖依赖
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
创建一个类并继承UDF 并重写evaluate方法
package com.ruozedata.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
public class Append extends UDF {
public Text evaluate(final Text s, final Text text) {
if (s == null || text == null) { return null; }
return new Text(s.toString() + text.toString());
}
}
打成JAR包,并上传到Hive中
#####上传方式一:只在当前会话中有效
add jar /opt/hive-udf-1.0.jar;
#####上传方式二:将jar包放在hive的lib下,hive启动是加载
cp hive-udf-1.0.jar $HIVE_HOME/lib/
在Hive中注册
#####注册方式一:临时函数,只在当前会话中有效
create temporary function append as 'com.ruozedata.udf.Append';
#####注册方式二:永久有效,在所有会话中都有效
##### hive 0.13.0及以上版本有效
create function append as 'com.ruozedata.udf.Append';
##### hive 1.2.0及以上版本有效,获取由不同HiveCLI会话完成的永久功能的任何更改。
RELOAD FUNCTION;
#####注册方式三:永久有效,在所有会话中都有效
##### hive 0.13.0及以上版本有效
CREATE FUNCTION append AS 'com.ruozedata.udf.Append' USING JAR 'hdfs:///hive-udf-1.0.jar';