我对Spark结构化流文档有一个误解。我读过很多遍了。 https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html
写道:
“对于从时间T开始的特定窗口,引擎将维持状态并允许延迟数据更新状态,直到(引擎看到的最大事件时间-延迟阈值> T)为止。”
这意味着T在这里是窗口的开始,如果保持该状态,我正确吗?
即当此条件(引擎看到的最大事件时间-延迟阈值> T)开始满足时,从T开始的窗口将不再更新。
水印=引擎看到的最大事件时间-延迟阈值。
但稍后我们可以看到用例,其中T似乎在该窗口的尽头。
“但是,当水印更新为12:11时,窗口的中间状态(12:00-12:10)被清除,并且所有后续数据(例如(12:04,驴))被认为是“太晚了”,因此将其忽略。请注意,在每次触发之后,更新的计数(即紫色行)将被写入接收器,作为更新输出指示的触发输出。”
所以我们停止更新窗口,原因是wm> 12:10(窗口结束),而不是12:00(窗口开始),对吗?和T必须在窗口尽头?