我有一个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
。