首先添加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');

Hive UDF开发_hadoop