FLink Table 函数
FLink Table 函数
flink table 大的来说分为两类
1. 内置函数
定义:flink 官方自带的函数,也叫内置函数
如:字符串函数() 逻辑函数() 计算函数(max,sum,avg)
2. 用户自定义函数(udf函数)
定义:用户通过继承框架的抽象类 根据需求扩展得到的函数 分为几类
-
标量函数
-
表函数
2.1 标量函数
定义:就是一次处理一行数据 可以输入该行数据的一个或者多个字段 甚至是0个 通过函数只会输出一个结果
实现方式:
-
继承 ScalarFunction
-
要求类必须是public的
-
且要public的有eval() 方法(虽然不是实现 但是底层约定的就是这个名字)
代码示例:
public static class HashCode extends ScalarFunction { private int factor = 13; public HashCode(int factor) { this.factor = factor; } public int eval(String str) { return str.hashCode() * factor; } }
-
2.2 表函数
定义:就是一次处理一行数据 可以输入该行数据的一个或者多个字段 甚至是0个 通过函数会输出多个结果,多行
实现方式:
-
继承 TableFunction
-
要求类必须是public的
-
且要public的有eval() 方法(虽然不是实现 但是底层约定的就是这个名字)
-
无返回值 使用 collect 输出
代码示例:
public static class Split extends TableFunction<Tuple2<String, Integer>> {
private String flag = ",";
public Split(String flag) {
this.flag = flag;
}
public void eval(String str) {
String[] splitStr = str.split(flag);
for (String s : splitStr) {
collect(new Tuple2<>(s, s.length()));
}
}
}