У меня есть приложение Flink, которое постоянно выдает эту ошибку.
com.org.ads.audience.traffic.MyClass@6eaa21d8 is not serializable. The object probably contains or references non serializable fields.
org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:140)
org.apache.flink.api.java.ClosureCleaner.clean(ClosureCleaner.java:115)
org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.clean(StreamExecutionEnvironment.java:1558)
org.apache.flink.streaming.api.datastream.DataStream.clean(DataStream.java:185)
org.apache.flink.streaming.api.datastream.DataStream.flatMap(DataStream.java:611
Очень сложно отследить, почему этот класс не сериализуем. Я убедился, что MyClass
и все другие классы, на которые он ссылается, Serializable
и имеют конструкторы по умолчанию. Как я могу отладить это дальше? Я попытался добавить -Dsun.io.serialization.extendedDebugInfo=true
в командную строку, но, похоже, он не предоставляет мне дополнительной информации. Я работаю в режиме кластера пряжи.
MyClass
реализуетFlatMapFunction
. И да! Мне удалось обойти эту ошибку, сделав объект временным :) Интересно, влияет ли это на производительность / правильно ли это делать? - person frodo   schedule 25.09.2019MyClass
отмечены как временные, мне пришлось добавить объяснениеMyClass implements Serializable
, чтобы мое приложение Flink не выходило из строя. Это кажется странным. - person frodo   schedule 25.09.2019