抱歉,是我表述不清楚,ListState<List<String>>只是举个例子,并不是我的应用场景实际的状态。
从实际考虑,我想利用MapState保存一系列特殊的计数器Map,也就是MapState<Long,Map<String,Long>>,主要用来做一个伪窗口,key是窗口的开始时间。

主要想知道,在MapStateDescriptor声明类型信息时,我是否应该把内部Map声明成明确的HashMap类型,而不是Map类型?

Yun Tang <myas...@live.com> 于2020年8月21日周五 上午12:13写道:

> Hi
>
> 如果想要在list中保存String,也就是list中的每个元素格式是String,ListState的格式应该是
> ListState<String>, 而不是
> ListState<List<String>>,后者表示有一个list,list中的每一个元素均是一个list<String>
>
> ListState 本身并不属于java的collection,所以不存在ArrayList 与 LinkedList的区别。
>
> 祝好
> 唐云
> ________________________________
> From: shizk233 <wangwangdaxian...@gmail.com>
> Sent: Thursday, August 20, 2020 18:00
> To: user-zh@flink.apache.org <user-zh@flink.apache.org>
> Subject: state序列化问题
>
> Hi all,
>
> 请教一下,State应该是通过StateDescriptor提取的类型信息来序列化/反序列化,
> 那么如果声明为接口类型,如ListState<List<String>>,但实际存入的是ArrayList/LinkedList,
> 会对类型信息提取产生不良影响吗?
>
> 按我的理解,ArrayList和LinkedList在序列化时的bytes组成结构应该是不太一样的。
> 但是都可以作为List<List<String>>来声明。
>
> 请求野生的大佬支援一下!
>

Reply via email to