Apache flink 原因:java.io.IOException:无法序列化Tuple2类型的默认值

Apache flink 原因:java.io.IOException:无法序列化Tuple2类型的默认值,apache-flink,Apache Flink,当我运行官方演示时,它不起作用 代码url: 运行结果: $ mvn exec:java -Dexec.mainClass=wikiedits.WikipediaAnalysis 线程“main”org.apache.flink.streaming.runtime.tasks.StreamTaskException中的异常:无法序列化运算符对象类org.apache.flink.streaming.runtime.operators.windowing.WindowOperator。 位于or

当我运行官方演示时,它不起作用

代码url

运行结果:

$ mvn exec:java -Dexec.mainClass=wikiedits.WikipediaAnalysis
线程“main”org.apache.flink.streaming.runtime.tasks.StreamTaskException中的异常:无法序列化运算符对象类org.apache.flink.streaming.runtime.operators.windowing.WindowOperator。 位于org.apache.flink.streaming.api.graph.StreamConfig.setStreamOperator(StreamConfig.java:187) 位于org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.setVertexConfig(StreamingJobGraphGenerator.java:322) 位于org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.createChain(StreamingJobGraphGenerator.java:216) 位于org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.createChain(StreamingJobGraphGenerator.java:207) 位于org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.setChaining(StreamingJobGraphGenerator.java:177) 位于org.apache.flink.streaming.api.graph.StreamingJobGraphGenerator.createJobGraph(StreamingJobGraphGenerator.java:126) 位于org.apache.flink.streaming.api.graph.StreamGraph.getJobGraph(StreamGraph.java:580) 位于org.apache.flink.streaming.api.environment.LocalStreamEnvironment.execute(LocalStreamEnvironment.java:89) 位于org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java:1170) 在wikiedits.wikipedialysis.main(wikipedialysis.java:42) 原因:java.io.IOException:无法序列化Tuple2类型的默认值。 位于org.apache.flink.api.common.state.StateDescriptor.writeObject(StateDescriptor.java:334) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:498) 位于java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1128) 位于java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) 位于java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 位于java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1178) 位于java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 位于java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 位于java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 位于java.io.ObjectOutputStream.WriteObject 0(ObjectOutputStream.java:1178) 位于java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 位于org.apache.flink.util.InstantiationUtil.serializeObject(InstantiationUtil.java:512) 位于org.apache.flink.util.InstantiationUtil.writeObjectToConfig(InstantiationUtil.java:442) 位于org.apache.flink.streaming.api.graph.StreamConfig.setStreamOperator(StreamConfig.java:184) ... 9更多 原因:java.lang.NullPointerException 位于org.apache.flink.api.common.state.StateDescriptor.writeObject(StateDescriptor.java:326) ... 25多
通过删除flink依赖项上提供的作用域,我能够从命令行运行此示例。这四个依赖项需要与文档中显示的内容完全匹配(这一点显然需要更清楚):


org.apache.flink
弗林克爪哇
${flink.version}
org.apache.flink
flink-streaming-java_${scala.binary.version}
${flink.version}
org.apache.flink
flink-U 2.11
${flink.version}
org.apache.flink
flink-connector-U2.11
${flink.version}

感谢您的关注,我发现了问题,原因是我的Maven下载了flink-streaming-java_2.11-1.5.1.jar的损坏jar包。最后,我自己下载了jar并将其放入maven存储库。
$ mvn exec:java -Dexec.mainClass=wikiedits.WikipediaAnalysis
<dependencies>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-java</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-clients_2.11</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-connector-wikiedits_2.11</artifactId>
        <version>${flink.version}</version>
    </dependency>
</dependencies>