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()));
    }
  }
}
posted @ 2021-04-12 22:43  从不吃鱼的猫  阅读(599)  评论(0编辑  收藏  举报