Lee*_*eeW 5 google-cloud-dataflow
我一直在阅读 Dataflow SDK 文档,试图找出当数据到达流作业中的水印时会发生什么。
这一页:
https://cloud.google.com/dataflow/model/windowing
表示如果使用默认的 window/trigger 策略,则后期数据将被丢弃:
注意:Dataflow 的默认窗口和触发策略会丢弃延迟数据。如果您想确保您的管道处理延迟数据的实例,则需要在设置 PCollection 的窗口策略并相应地为 PCollection 设置触发器时显式设置 .withAllowedLateness。
然而这个页面:
https://cloud.google.com/dataflow/model/triggers
表示延迟数据在延迟到达时将作为单个元素 PCollection 发出:
PCollection 的默认触发器是基于事件时间的,并在系统的水印(Dataflow 的“应该”拥有所有数据的时间)通过窗口末尾时发出窗口的结果。默认触发器在重复的基础上发出,这意味着根据定义,任何迟到的数据都将在水印之后到达并触发触发器,从而导致迟到的元素在它们到达时被发出。
那么,超过水印的后期数据会被完全丢弃吗?或者,如果它及时到达,它会不会与其他数据一起发出,而是自己发出?
默认的“窗口和触发策略”会丢弃晚期数据。该WindowingStrategy对象由窗口、触发和一些其他参数(例如允许的延迟)组成。默认允许的迟到值为 0,因此任何迟到的数据元素都将被丢弃。
默认触发器处理延迟数据。如果您采用默认值WindowingStrategy并仅更改允许的迟到,那么您将收到一个PCollection包含所有准时数据的一个输出窗格,然后大约每个迟到元素的新输出窗格。
| 归档时间: |
|
| 查看次数: |
1503 次 |
| 最近记录: |