我正在将我们的apache flink集群从1.6.1版本升级到1.8.0(scala-2.11),并在成功提交作业后立即在其中一项作业中遇到了NullPointerException。看起来好像没有一个Edge sourceId加载到chainedConfigs映射中。我是否缺少一些配置参数或1.7或1.8的迁移步骤?
我已经检查过是否错误加载了不同的flink版本,但事实并非如此。我所有的依赖项和我正在使用的flink docker映像在classpath中都具有Flink 1.8.0。
检查了Flink源代码,发现NPE来自以下行:chainedConfigs.get(edge.getSourceId()).getBufferTimeout()
这是NPE堆栈跟踪:
java.lang.NullPointerException
at org.apache.flink.streaming.runtime.tasks.StreamTask.createRecordWriters(StreamTask.java:1175)
at org.apache.flink.streaming.runtime.tasks.StreamTask.<init>(StreamTask.java:212)
at org.apache.flink.streaming.runtime.tasks.StreamTask.<init>(StreamTask.java:190)
at org.apache.flink.streaming.runtime.tasks.SourceStreamTask.<init>(SourceStreamTask.java:51)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.flink.runtime.taskmanager.Task.loadAndInstantiateInvokable(Task.java:1405)
at org.apache.flink.runtime.taskmanager.Task.run(Task.java:689)
at java.lang.Thread.run(Thread.java:748)