Impala自定义函数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44455388/article/details/102502557

UDF实现要点:

  • 根据集群中Hive的版本导入对应版本的hive-exec.jar
  • 自定义UDF类要继承接口UDF
  • 实现evaluate()方法

1、需要用到的依赖:

<dependencies>
      <dependency>
          <groupId>org.apache.hive</groupId>
          <artifactId>hive-exec</artifactId>
          <version>1.1.0</version>
      </dependency>
</dependencies>

2、自定义UDF类:

package com.atguigu.hive;
import org.apache.hadoop.hive.ql.exec.UDF;
public class Lower extends UDF {
  public String evaluate (String s) {
       if (s == null) {
          return null;
      }
        return s.toLowerCase();
  }
}

3、打成jar包上传到服务器/root/jars/ hive_udf-0.0.1-SNAPSHOT.jar
4、将jar包上传到hdfs的指定目录

hadoop fs -put hive_udf-0.0.1-SNAPSHOT.jar /impala_udf/

5、注册函数

[hadoop103:21000] > create function mylower(string) returns string location 'hdfs://impala_udf/hive_udf-0.0.1-SNAPSHOT.jar' symbol='com.impala.udf.mylower_udf';

6、使用自定义函数

[hadoop103:21000] > select ename, mylower(ename) from emp;

7、通过show functions查看自定义的函数


[hadoop103:21000] > show functions;
 
Query: show functions
 
+-------------+-----------------+-------------+---------------+
 
| return type | signature       | binary type | is persistent |
+-------------+-----------------+-------------+---------------+
| STRING      | mylower(STRING) | JAVA        | false         |
 
+-------------+-----------------+-------------+---------------+

猜你喜欢

转载自blog.csdn.net/weixin_44455388/article/details/102502557