Hive的UDF,其实很类似Mysql之类的自定义函数
不过它需要用java来编写,而不是用传统的SQL来完成
实现一个UDF的步骤如下:
- 实现一个Java Class,继承自UDF
- 打成jar包,并加入到Hive的ClassPath中
- 生成自定义函数,执行select
- 删除刚才创建的临时函数
下面这个UDF,是我给hive的array增加的一个函数
用来判断array中是否包含某个值,hive的标准函数中并没有此功能函数
package com.sohu.hadoop.hive.udf;
import java.util.*;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.BooleanWritable;
import org.apache.hadoop.io.Text; public final class ArrayContains extends UDF { public BooleanWritable evaluate(ArrayList
arr,Text ele)
{
BooleanWritable rtn = new BooleanWritable(false);
if (arr == null || arr.size() < 1)
{
return rtn;
}
try {
String cstr = ele.toString();
for (String str : arr)
{
if (str.equals(cstr))
{

本文介绍了如何在Hive中实现自定义函数UDF,通过编写Java类并继承UDF,然后将编译后的jar包添加到Hive的ClassPath中。示例中展示了一个用于检查array是否包含特定值的UDF,并提供了编译、打包及在Hive中执行查询的步骤。

923

被折叠的 条评论
为什么被折叠?



