WindowOperator上的deserializeObject异常

时间:2016-01-18 14:42:18

标签: apache-flink

似乎WindowOperator中的数据可以成功序列化。但taskmanager重新启动jobmanager时反序列化失败。

env: 后端: hdfs ; jobmanager:高可用性

根异常:

java.lang.Exception: Could not restore checkpointed state to operators and functions
    at org.apache.flink.streaming.runtime.tasks.StreamTask.restoreStateLazy(StreamTask.java:414)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:208)
    at org.apache.flink.runtime.taskmanager.Task.run(Task.java:584)
    at java.lang.Thread.run(Thread.java:744)
Caused by: java.io.StreamCorruptedException: invalid type code: 00
    at java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2508)
    at java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2543)
    at java.io.ObjectInputStream$BlockDataInputStream.read(ObjectInputStream.java:2615)
    at java.io.DataInputStream.readInt(DataInputStream.java:387)
    at java.io.ObjectInputStream$BlockDataInputStream.readInt(ObjectInputStream.java:2820)
    at java.io.ObjectInputStream.readInt(ObjectInputStream.java:971)
    at java.util.HashMap.readObject(HashMap.java:1158)
    at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
    at org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:294)
    at org.apache.flink.streaming.runtime.operators.windowing.WindowOperator$Context.<init>(WindowOperator.java:446)
    at org.apache.flink.streaming.runtime.operators.windowing.WindowOperator.restoreState(WindowOperator.java:621)
    at org.apache.flink.streaming.runtime.tasks.StreamTask.restoreStateLazy(StreamTask.java:406)

1 个答案:

答案 0 :(得分:0)

当我运行多个flink应用程序并重用相同的自定义窗口/触发器类时,我遇到了同样的问题。 (我不知道你的情况是否属实) 但是我在我不同的重用类中添加了生成的serialVersionUID,它现在工作正常