【发布时间】:2018-08-03 08:04:39
【问题描述】:
但是,要在几天内运行此查询,系统必须 限制它累积的中间内存状态的数量。这 意味着系统需要知道何时可以删除旧聚合 从内存状态,因为应用程序不会 不再接收该聚合的延迟数据。要启用此功能,在 Spark 2.1,我们引入了水印,它让引擎 自动跟踪数据中的当前事件时间并尝试 相应地清理旧状态。您可以定义一个水印 通过指定事件时间列和关于如何的阈值进行查询 迟到的数据预计是在事件时间方面。对于一个特定的 从时间 T 开始的窗口,引擎将保持状态并允许 更新状态的延迟数据,直到(引擎看到的最大事件时间 - 延迟阈值 > T)。换句话说,阈值内的延迟数据将被聚合,但阈值之后的数据将开始 被丢弃(请参阅本节后面的确切保证)。 让我们通过一个例子来理解这一点。我们可以很容易地定义 如图所示,使用 withWatermark() 在前面的示例中添加水印 下面。
以上内容复制自http://spark.apache.org/docs/latest/structured-streaming-programming-guide.html。
从上面的文档描述(For a specific window starting at time T),它是给定窗口的开始时间。
我认为文档有误,应该是给定窗口的结束时间。
【问题讨论】:
标签: apache-spark