当前位置: 首页>前端>正文

Hive(七)—— 函数


文章目录

  • 1. 系统自带的函数
  • 2. 自定义函数
  • 2.1 开发自定义函数
  • 2.2 测试开发的自定义函数


1. 系统自带的函数

1)查看系统自带的函数
hive> show functions;

2)显示自带的函数的用法
hive> desc function upper;

3)详细显示自带的函数的用法
hive> desc function extended upper;

2. 自定义函数

根据用户自定义函数类别分为以下三种:

  • UDF(User-Defined-Function)
    一进一出
  • UDAF(User-Defined Aggregation Function)
    聚集函数,多进一出
    类似于:count/max/min
  • UDTF(User-Defined Table-Generating Functions)
    一进多出
    如lateral view explode()

2.1 开发自定义函数

pom.xml

<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec -->
<dependency>
  <groupId>org.apache.hive</groupId>
  <artifactId>hive-exec</artifactId>
  <version>3.1.2</version>
</dependency>

Lower.java

package com.during.hive;
import org.apache.hadoop.hive.ql.exec.UDF;

public class Lower extends UDF {
  public String evaluate(final String s) {
    if (s == null) {
        return null;
    }
    return s.toString().toLowerCase();
  }
}

注:

  1. 需要实现evaluate函数;evaluate函数支持重载;
  2. UDF必须要有返回类型,可以返回null字符串,但是返回类型不能为void。

2.2 测试开发的自定义函数

  1. 打包jar上传到服务器/usr/local/hive-3.1.2/test_files/jars/udf.jar。
  2. 将jar包添加到hive的classpath
hive> add jar /usr/local/hive-3.1.2/test_files/jars/udf.jar;
  1. 创建临时函数与开发好的java class关联(全类名)
    create [temporary] function [dbname.]function_name AS class_name;
hive> create temporary function udf_lower as "com.during.hive.Lower";
  1. 运行
hive> select ename, udf_lower(ename) lowername from emp;
  1. 在hive的命令行窗口删除函数
hive> Drop [temporary] function [if exists] [dbname.]function_name;



https://www.xamrdz.com/web/2km1926559.html

相关文章: