Scala Apache Spark中的无水印滑动窗口?

Scala Apache Spark中的无水印滑动窗口?,scala,apache-spark,spark-structured-streaming,spark-streaming-kafka,spark-checkpoint,Scala,Apache Spark,Spark Structured Streaming,Spark Streaming Kafka,Spark Checkpoint,考虑到我有一个简单的聚合,定义了一个没有任何水印的窗口 df .groupBy(window(col("time"), "30 minutes","10 minutes").as("time")) .aggr .... 这里的窗口为30分钟,滑动间隔为10分钟 Q1.这是否意味着10分钟后,它会滑动 Q2.如果是这样,那么它不是有点类似于水印吗 是的,它将每10分钟滑动/计算一次(滑动间隔),提供30分钟的重叠

考虑到我有一个简单的聚合,定义了一个没有任何水印的窗口

df
.groupBy(window(col("time"), "30 minutes","10 minutes").as("time"))
.aggr ....
这里的窗口为
30分钟
,滑动间隔为
10分钟

  • Q1.这是否意味着10分钟后,它会滑动
  • Q2.如果是这样,那么它不是有点类似于水印吗
  • 是的,它将每10分钟滑动/计算一次(滑动间隔),提供30分钟的重叠窗口。您不定义是否使用事件或摄取时间。如果使用事件时间,则会随着时间的推移处理延迟处理、无序更新,以在更新的窗口中包含此类数据

  • 根据前面的问题,这与水印不同。水印意味着在一段时间之后,延迟到达的数据被丢弃,因此上述效果需要考虑时间。也就是说,一些较旧的窗口将不会更新


  • 嗨@thebluephantom,如果我们不保留任何水印,这是否意味着该州将随着新的传入数据(包括以前的数据)而继续增长?这是我的理解,如果使用complete,最终将产生oom。因此,丢弃数据的水印。我在文档中没有很好的解释。谢谢@thebluephantom,我对这个状态还有一个疑问,你能帮我看看吗:更具体地说:稍后再看好的,还有一个发现,如果我们在上面的代码示例中不使用水印,随着新的传入记录,数据帧将不断增长。谢谢@thebluephantom