Apache Flink ListState vs ValueState >

问题描述 投票:1回答:1

看看文档,似乎我可以使用ListStateValueState<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转换为List <>,而如果我使用ValueState,我可以直接检索列表。

java apache-flink
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.