Serialization 启动Flink应用程序时出现序列化错误

Serialization 启动Flink应用程序时出现序列化错误,serialization,apache-flink,flink-streaming,Serialization,Apache Flink,Flink Streaming,我有一个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.ap

我有一个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
和它引用的所有其他类都是
可序列化的
,并且具有默认构造函数。我如何进一步调试它?我尝试将
-Dsun.io.serialization.extendedDebugInfo=true
添加到命令行,但它似乎没有提供更多信息。
我正在以纱线簇模式运行

我的一个类使用JDBC的
BasicDataSource
,它包含不可序列化的元素。我必须将其标记为瞬态才能序列化。

我的一个类使用JDBC的
BasicDataSource
,它包含不可序列化的元素。我必须将其标记为瞬态才能序列化。

我有一些问题。。。Myclass用于什么类型的函数?您是否尝试将myclass对象实例化为瞬态对象?Hi-
myclass
实现
FlatMapFunction
。是的!我可以通过使对象成为瞬态对象来克服这个错误:)想知道这是否会影响性能/这是正确的做法吗?还有一件事-即使将
MyClass
的一些实例变量标记为瞬态,我也必须解释添加
MyClass实现可序列化的
,以便我的Flink应用程序不会出错。这似乎很奇怪。我有一些问题。。。Myclass用于什么类型的函数?您是否尝试将myclass对象实例化为瞬态对象?Hi-
myclass
实现
FlatMapFunction
。是的!我可以通过使对象成为瞬态对象来克服这个错误:)想知道这是否会影响性能/这是正确的做法吗?还有一件事-即使将
MyClass
的一些实例变量标记为瞬态,我也必须解释添加
MyClass实现可序列化的
,以便我的Flink应用程序不会出错。这看起来很奇怪。为什么要使用JDBC源代码?您的数据应该来自Flink流,而不是外部数据源。我正在从Kafka读取事件,我需要将它们与mysql中的一些(主要是静态)数据连接起来。我在一个
FlatMap
函数中执行此操作。类似于这样,只是我目前没有执行任何异步io。为什么要使用JDBC源代码?您的数据应该来自Flink流,而不是外部数据源。我正在从Kafka读取事件,我需要将它们与mysql中的一些(主要是静态)数据连接起来。我在一个
FlatMap
函数中执行此操作。类似于这样,只是我目前没有执行任何异步io。