Java Flink 1.13异常试图使用tableAPI



这是我试图初始化StreamTableEnvironment的错误

private final StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.getConfiguration()Lorg/apache/flink/configuration/ReadableConfig;
at org.apache.flink.table.api.bridge.java.StreamTableEnvironment.create(StreamTableEnvironment.java:98)
at com.teavaro.cep.modules.propensityscores.PropensityScoresUseCaseHandler.<init>(PropensityScoresUseCaseHandler.java:34)
at com.teavaro.cep.modules.TransformationsHandler.<init>(TransformationsHandler.java:24)
at com.teavaro.cep.StreamingJob.run(StreamingJob.java:146)
at com.teavaro.cep.StreamingJob.setUp(StreamingJob.java:138)
at com.teavaro.cep.StreamingJob.main(StreamingJob.java:64)

然后当我进入create definition方法

static StreamTableEnvironment create(StreamExecutionEnvironment executionEnvironment) {
return create(
executionEnvironment,
EnvironmentSettings.fromConfiguration(executionEnvironment.getConfiguration()));
}

我看到红色的getConfiguration()说'getConfiguration()'在'org.apache.flink.streaming.api.environment.StreamExecutionEnvironment'中具有受保护的访问权限

我已经重新构建java pom好几次了。

我发现这个方法在Flink1.13中不是正确的create方法。也许你应该检查是否有依赖冲突mvn dependency:tree。当前的create方法应该返回这个

static StreamTableEnvironment create(StreamExecutionEnvironment executionEnvironment) {
return create(executionEnvironment, EnvironmentSettings.newInstance().build());
}

链接:https://github.com/apache/flink/blob/release-1.13/flink-table/flink-table-api-java-bridge/src/main/java/org/apache/flink/table/api/bridge/java/StreamTableEnvironment.java#L97

最新更新