kafka主题重新处理的spark-streaming批处理间隔

时间:2016-11-09 20:25:46

标签: apache-spark apache-kafka spark-streaming

当前设置:Spark Streaming作业处理时间序列数据的Kafka主题。大约每秒钟都有不同传感器的新数据。此外,批处理间隔为1秒。通过updateStateByKey()状态数据计算为新流。只要此有状态数据超过阈值,就会在Kafka主题上生成事件。当值稍后降低到阈值以下时,会再次触发该主题的事件。

到目前为止,非常好。

问题:在通过重新设置Kafka主题对数据应用新算法时,我希望快速进行。但这意味着每批包含(数百)条消息。将这些批量移动到updateStateByKey()会导致生成的流上的该键的计算值为1。

当然,由于数据点的负载减少到一个,这是不可接受的。将在重新计算的流上生成将在实时流上生成的警报事件。因此,以这种方式比较算法是完全没用的。

问题:我该如何避免这种情况?优选地,不切换框架。在我看来,我正在寻找一个真正的流媒体(一次一个事件)框架。另一方面,Spark流媒体对我来说是新的,所以我肯定在那里错过了很多。

1 个答案:

答案 0 :(得分:0)

在spark 1.6中,引入了一个用于与州进行交互的新API mapWithState。我相信这会解决你的问题。

看看它here