Apache flink POJO类中ArrayList的序列化

Apache flink POJO类中ArrayList的序列化,apache-flink,flink-streaming,Apache Flink,Flink Streaming,对于流处理作业,我定义了一个POJO类,它具有一个泛型参数T和一个类型为ArrayList的属性,我将其用作数据流中的元素类型,以及CoKeyedProcessFunction中有状态计算中的状态存储类型 class TestClass<T> { ArrayList<T> list; // ... getter and setter for list } class测试类{ 数组列表; //…列表的getter和setter } 对于ArrayList

对于流处理作业,我定义了一个POJO类,它具有一个泛型参数
T
和一个类型为
ArrayList
的属性,我将其用作
数据流
中的元素类型,以及
CoKeyedProcessFunction
中有状态计算中的状态存储类型

class TestClass<T> {
    ArrayList<T> list;
    // ... getter and setter for list
}
class测试类{
数组列表;
//…列表的getter和setter
}
对于
ArrayList
,Flink的序列化返回到Kryo,Flink会在流处理作业启动时发出警告

由于Flink似乎包含列表的专用序列化程序,特别是ArrayList,我希望Flink能够自动识别和使用这些序列化程序,就像原语值及其装箱版本一样


我必须做些什么才能迫使Flink使用正确的序列化程序?

你能分享一些代码吗?一般来说,在没有Kryo的情况下序列化列表应该不会有问题。事实证明,如果我使用
list
作为属性类型,Flink不会回到Kryo。然后,序列化独立于列表的实现工作。反序列化似乎总是使用ArrayList实现。是的,这是预期的行为,我想文档中已经描述过。
ListSerializer
总是使用
ArrayList
作为类型。您可以共享一些代码吗?一般来说,在没有Kryo的情况下序列化列表应该不会有问题。事实证明,如果我使用
list
作为属性类型,Flink不会回到Kryo。然后,序列化独立于列表的实现工作。反序列化似乎总是使用ArrayList实现。是的,这是预期的行为,我想文档中已经描述过。
ListSerializer
始终使用
ArrayList
作为类型。