Spark流mapWithState超时没有删除

时间:2017-06-29 14:57:14

标签: spark-streaming

想象一个用例,其中事件是按用户流式传输的,但只有第一周的事件才有意义。在该时间范围内,使用mapWithState进行有状态逻辑。在此期间之后,应忽略用户传入事件。

由于用户的状态记忆,因此在用户的周期之后将其更改为简单的已经看到的标记是有意义的。

如果该用户在第一次活动后一周或更晚的时间内发生任何事件,很容易将状态更改为已经看过的标记。

但是,如果在那一周之后没有事件发生,那么状态永远不会改变到那个已经看过的标记,并且状态将继续永远占据记忆。

据我了解,添加超时(对用户的状态)将无济于事,因为您不允许更改超时状态的状态(有意义,因为它将被删除)。

有没有一种简单的方法来实现这个用例?

1 个答案:

答案 0 :(得分:0)

根据我的理解,Spark的2.2 mapGroupsWithState具有更丰富的超时,不仅可用于删除状态,还可用于更改状态(检查here)。