我正在尝试使用Spark结构化流加入两个流。一个流是一些常规数据(流A),而另一个流(流B)是与流A中的数据相关的一些元数据。该元数据得到更新,因此我使用flatMapGroupWithState
来保存状态。 / p>
它工作正常,但现在的问题是:
如果当数据a1进入A时流B中有数据b1,则它们将被合并并产生以下行:a1 b1
。但是,如果稍后出现另一个针对b1的更新事件,它将再次与a1结合,那么我们最终将得到两行a1 b1
。
那么,是否存在使每一行只允许被连接一次的问题?这意味着,当b1更新时,由于a1已经加入,因此不应与a1加入。
我想过如果数据早于特定时间范围,则流A中的数据将过期。但是我希望有其他解决方案,因为还有一个流C必须与流A一起加入,并且流C中的事件可能会晚。