【问题标题】:Flink MapState Clear vs RemoveFlink MapState 清除与删除
【发布时间】:2021-11-18 20:44:49
【问题描述】:
Flink MapState 有两种方法,clear() 和 remove(key)。我已经为映射描述符设置了可查询状态,当在某些 ProcessFunction 中调用 remove(key) 时,我仍然能够查询一个键,即该键尚未从我的映射状态中删除,检查点大小也在不断增加。我需要调用 clear(),有人能解释一下这两种方法的作用吗?
【问题讨论】:
标签:
apache-flink
flink-streaming
【解决方案1】:
remove(key) 从映射中删除该键的条目。 clear() 彻底破坏了整个地图。
MapState,与ValueState 和ListState 一起,是一种键分区状态,旨在与键控流(和广播流)一起使用。当您需要为键控流中的每个不同键存储单个值时,ValueState 是合适的。当您想为每个不同的键存储哈希图时,请使用MapState。换句话说,ValueState 已经为您提供了一个分布式哈希图——MapState 适用于您需要一个值本身就是哈希图的分布式映射的情况。 remove 清除内部映射中的条目,而clear 清除外部映射中的条目。