Flinksql 自定义udf

flink-sql  自定义UDF需注意:

1、函数类
实现类必须继承自合适的基类之一(例如 org.apache.flink.table.functions.ScalarFunction )。

该类必须声明为 public ,而不是 abstract ,并且可以被全局访问。不允许使用非静态内部类或匿名类。

为了将自定义函数存储在持久化的 catalog 中,该类必须具有默认构造器,且在运行时可实例化。

2、求值方法
基类提供了一组可以被重写的方法,例如 open()、 close() 或 isDeterministic() 。

但是,除了上述方法之外,作用于每条传入记录的主要逻辑还必须通过专门的 求值方法 来实现。

根据函数的种类,后台生成的运算符会在运行时调用诸如 eval()、accumulate() 或 retract() 之类的求值方法。

这些方法必须声明为 public ,并带有一组定义明确的参数。

实现重载的方法,例如 eval(Integer) 和 eval(LocalDateTime);
使用变长参数,例如 eval(Integer...);
使用对象继承,例如 eval(Object) 可接受 LocalDateTime 和 Integer 作为参数;
也可组合使用,例如 eval(Object...) 可接受所有类型的参数。

下面是例子:

1、先创建flink-udf函数类

package com.test.udf;

import org.apache.flink.table.functions.ScalarFunction;

public class MyUdf 

你可能感兴趣的:(Flink实战,flink)