Hive构建UDF(User-Defined Function)

Hive提供内建的UDAF和UDTF函数供我们使用,一般而言,这些函数就已经够平常使用了,但是遇到一些特殊的场景,这些函数就不够用了。Hive提供了UDF使我们能够自己构建函数进行功能扩展。

构建UDF的步骤

  • 使用maven创建工程HiveUDF
  • 添加 hadoop-common-2.6.0hive-exec-1.2.1 依赖
  • 编写UDF类

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import org.apache.hadoop.hive.ql.exec.UDF;
    import org.apache.hadoop.io.Text;
    public class ReverseString extends UDF {
    public Text evaluate(final Text text) {
    if (text == null) { return null; }
    StringBuilder stringBuilder = new StringBuilder(text.toString()); String reverse = stringBuilder.reverse().toString();
    return new Text(reverse);
    }
    }
  • 编译打包成jar(依赖的类也要打包近jar)

  • 将jar包注册到Hive中并查看

    1
    2
    hive> ADD JAR /opt/myudf.jar;
    hive> LIST JARS
  • 创建函数指向UDF类:

    1
    >hive CREATE FUCTION string_reverse AS 'com.leon.learnhive.ReverseString';
  • 使用

    1
    2
    select string_reverse('abcde');
    select string_reverse(firstname) from tablename;
坚持原创技术分享,您的支持将鼓励我继续创作!