首先添加Maven依赖,为了让我们写UDF方便测试
<dependencies>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.2</version>
</dependency>
</dependencies>
然后新建一个UDF类,这里我使用官网的例子,功能是将字母转为小写
package blog;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.hive.ql.exec.UDF;
/**
* @Author Daniel
* @Description 官网UDF用例
**/
public final class Lower extends UDF {
public Text evaluate(final Text s) {
if (s == null) {
return null;
}
return new Text(s.toString().toLowerCase());
}
}
打成jar包,添加到hive中
add jar /home/hadoop/hive_jar/Lower.jar;
创建一个临时函数
create temporary function my_lower as 'blog.Lower';
使用UDF成功的将字符转成了小写字母
select my_lower('AA');
select my_lower('Hive VIP');