当前设置:Spark Streaming作业处理时间序列数据的Kafka主题。大约每秒钟都有不同传感器的新数据。此外,批处理间隔为1秒。通过updateStateByKey()
状态数据计算为新流。只要此有状态数据超过阈值,就会在Kafka主题上生成事件。当值稍后降低到阈值以下时,会再次触发该主题的事件。
到目前为止,非常好。
问题:在通过重新设置Kafka主题对数据应用新算法时,我希望快速进行。但这意味着每批包含(数百)条消息。将这些批量移动到updateStateByKey()
会导致生成的流上的该键的计算值为1。
当然,由于数据点的负载减少到一个,这是不可接受的。将在重新计算的流上生成将在实时流上生成的警报事件。因此,以这种方式比较算法是完全没用的。
问题:我该如何避免这种情况?优选地,不切换框架。在我看来,我正在寻找一个真正的流媒体(一次一个事件)框架。另一方面,Spark流媒体对我来说是新的,所以我肯定在那里错过了很多。