apache flink liststate与valuestate

kb5ga3dv  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(573)

看看这些文件,我好像可以用 ListState 或者 ValueState<List<String>> 存储状态。例如下面的代码:

// Use ListState
ListStateDescriptor<String> lDescriptor = new ListStateDescriptor<String> 
     ("testListState", TypeInformation.of(new TypeHint<String>() {}));

ListState<String> testListState = getRuntimeContext().getListState(lDescriptor);

// Use ValueState
ValueStateDescriptor<List<String>> testDescriptor =
 new ValueStateDescriptor<List<String>>("testList",
 TypeInformation.of(new TypeHint<List<String>>() {}));

ValueState<List<String>> testState = getRuntimeContext().getState(testDescriptor);

如果我需要存储一个与每个键相关的元素的唯一列表,那么使用其中一个键会有好处吗?使用liststate的缺点是,如果我需要在保存列表之前修改它,那么首先将iterable转换为一个列表,而如果我使用valuestate,则可以直接检索列表。

hgqdbh6s

hgqdbh6s1#

如果我只想为每个键存储一个值,我只使用valuestate。您可以使用它来存储列表,但代码将更加冗长。如果使用valuestate,则必须获取值、更新列表和更新值,但如果使用liststate,则可以直接管理它

相关问题