在Apache Flink中注册聚合UDF

时间:2018-03-15 21:15:06

标签: apache-flink flink-streaming flink-sql

我正在尝试按照here步骤创建基本的Flink Aggregate UDF。我已经添加了依赖项()并实现了

public class MyAggregate extends AggregateFunction<Long, TestAgg> {..}

我已经实施了强制性方法以及其他一些方法:accumulate, merge, etc。所有这些构建都没有错误。现在根据文档,我应该能够将其注册为

    StreamExecutionEnvironment sEnv = StreamExecutionEnvironment.getExecutionEnvironment();
    StreamTableEnvironment sTableEnv = StreamTableEnvironment.getTableEnvironment(sEnv);
    sTableEnv.registerFunction("MyMin", new MyAggregate());

但是,registerFucntion似乎只想要ScalarFunction作为输入。我收到了一个不兼容的类型错误:The method registerFunction(String, ScalarFunction) in the type TableEnvironment is not applicable for the arguments (String, MyAggregate)

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

您需要为您所选择的语言导入StreamTableEnvironment org.apache.flink.table.api.java.StreamTableEnvironment

org.apache.flink.table.api.StreamTableEnvironmentStreamTableEnvironment的Java和Scala变体的常见抽象类。我们注意到API的这一部分让用户感到困惑,我们将来会改进它。