Spark:在流式查询中使用事件时滑动窗口时出现问题

时间:2017-05-23 06:29:23

标签: apache-spark spark-structured-streaming

我在Spark 2.2中进行实时数据流传输。根据我的问题陈述,我想在120秒的滑动窗口内查询数据。持续时间。我每1秒触发一次streamingquery。因此理想情况下,查询应该只运行一个前一个120秒。数据(更新/新数据)。

但是当我运行查询时,它正在运行120秒之前的整个数据。 (旧的)数据。这意味着窗口正在滑动已经处理过的数据。

这背后可能是什么原因?以及如何仅对新数据(未处理)应用窗口?

1 个答案:

答案 0 :(得分:0)

使用spark 2.2和结构化流式传输,您可以在事件时间列上指定一个水印,以便执行您的聚合,Scala代码看起来应该是这样的,每秒滑动一次120秒的滑动窗口:

query
 .withWatermark("event-time-column", "120 second")
 .groupBy("event-time-column", "120 second", "1 second")

因此,将删除120秒以内数据的所有数据和聚合状态,并且只处理新数据

此处提供完整文档: https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html