问题描述
Spark中是否有一种方法可以处理到达水印之后的数据?
请考虑发送消息的设备的用例,这些消息需要在Kafka + Spark中进行处理。尽管有99%的消息在10分钟之内传递到Spark服务器,但是偶尔设备可能会离开连接区域一天或一周,并在内部缓冲消息,然后在恢复连接后一周后将它们传递出去。
水印间隔必须一定地受到限制,因为(1)必须及时产生主线情况,并且(2)由于Spark内部的缓冲空间也受到限制,因此Spark无法保留一周的消息量一周水印窗口中缓冲的所有设备。
在常规的Spark流结构中,超过水印的消息将被丢弃。
有没有办法拦截那些“很晚”的消息并将它们路由到处理程序或单独的流-仅是那些不在水印范围内的“被拒绝”消息?
解决方法
不,没有。我似乎记得Apache Flink可以处理这些事情。 Spark没有用于丢弃数据的提要。