我有一个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
添加到命令行,但似乎没有为我提供更多信息。我在纱线簇模式下运行。
我的一个类正在使用JDBC的BasicDataSource
,其中包含不可序列化的元素。我必须将其标记为transient
才能进行序列化。