如上图,其中虚线是最理想的,表示处理时间和事件时间是相同的,红线是实际上的线,也叫水位线(Watermark),它一般是通过启发式算法算出来的。
接下来从问题中抽象出四个具体的问题:
A:What are you computing,对数据的处理是哪种类型,数据转换、聚合或者是两者都有。例如,Sum、Join或是机器学习中训练学习模型等。在Beam SDK中由Pipeline中的操作符指定。如图:
C:When in processing time,何时将计算结果输出?在这里引入了一个Trigger机制,Trigger决定何时将计算结果发射出去,发射太早会丢失一部分数据,丧失精确性,发射太晚会导致延迟变长,而且会囤积大量数据,何时Trigger是由水位线来决定的,在Beam SDK中由Pipeline中的水位线和触发器指定。