You need to enable JavaScript to run this app.
文档中心
流式计算 Flink版

流式计算 Flink版

复制全文
下载 pdf
自定义函数 Demo
Scalar Functions
复制全文
下载 pdf
Scalar Functions

Scalar function 的输入可以是 0、1 ,以及多个标量(scalar values),但是输出的是一个标量。

如何实现

  1. pom.xml中添加flink-table-common的依赖。version 可以根据任务选择的 Flink 引擎填写对应的版本

    1. Flink 1.16 版本建议选择 1.16.3
    2. Flink 1.17 版本建议选择 1.17.2
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-table-common</artifactId>
        <version>${flink.version}</version>
        <scope>provided</scope>
    </dependency>
    
  2. 代码实现。
    通过继承org.apache.flink.table.functions.ScalarFunction实现,并且需要实现一个或多个 eval 函数。eval 函数输入可以是多个参数。

示例 Demo

本文提供了一个简单的 scalar function 的示例,作用是输入一个 String 类型,返回一个 int 类型的 hash 值。

public class HashCode extends ScalarFunction {
  //0.必须实现。
  public int eval(String s) {
      return s.hashCode() * 100;
  }
  
  //1.如果输入的参数类型是复杂类型,需要通过 getParameterTypes 指定入参的类型。
  @Override
  public TypeInformation<?>[] getParameterTypes(Class<?>[] signature) {
    TypeInformation[] typeInformation = new TypeInformation[1];
    // 入参是 String 类型。
    typeInformation[0] = Types.STRING;
    return typeInformation;
  }
  
  //2.如果返回的数据类型是复杂类型,需要通过 getResultType 指定返回数据的类型。
  @Override
  public TypeInformation<?> getResultType(Class<?>[] signature)
   // 返回类型是 int。
   return Types.INT;
  }
}

如何使用

如何使用自定义的 Scalar function,请参见创建自定义函数

最近更新时间:2025.08.06 17:31:38
这个页面对您有帮助吗?
有用
有用
无用
无用