为什么 flink MapState 没有 size 方法?
Why isn't there a size method for flink MapState?
我需要计算每个用户的每日订单。数据可能会延迟很长时间到达。所以我想我可以使用 MapState[String,Long] 因为键是日期,值是根据日期存储 count.But 的顺序号,随着时间的推移,每个键的键值将增加一个每天,总有一天州的规模可能会太大。由于数据不会超过一天,我只需要存储两天的数据。在这种情况下,我需要删除 MapState[String,Int] 大小达到 3 的最早日期。但我发现 fink MapState 没有大小方法。
我知道我可以使用迭代器来实现这一点,这正是我所做的。但是既然 java.util.Map 有 size 方法,为什么 flink MapState 没有 size 方法呢?
这是因为使用 RocksDB 状态后端时,MapState 的底层表示不允许有效实现大小方法。
看看这个:https://issues.apache.org/jira/browse/FLINK-5917 它解释了原因。 size() 从那时起就被删除了。
我需要计算每个用户的每日订单。数据可能会延迟很长时间到达。所以我想我可以使用 MapState[String,Long] 因为键是日期,值是根据日期存储 count.But 的顺序号,随着时间的推移,每个键的键值将增加一个每天,总有一天州的规模可能会太大。由于数据不会超过一天,我只需要存储两天的数据。在这种情况下,我需要删除 MapState[String,Int] 大小达到 3 的最早日期。但我发现 fink MapState 没有大小方法。
我知道我可以使用迭代器来实现这一点,这正是我所做的。但是既然 java.util.Map 有 size 方法,为什么 flink MapState 没有 size 方法呢?
这是因为使用 RocksDB 状态后端时,MapState 的底层表示不允许有效实现大小方法。
看看这个:https://issues.apache.org/jira/browse/FLINK-5917 它解释了原因。 size() 从那时起就被删除了。