Timely Stream Processing

Timely Stream Processing只是在Stateful Stream Processing上增加了时间的处理,可用于做特定时间段内的聚合操作,或时间序列分析等。

Event Time & Processing Time

Processing Time是operator开始处理数据的时间,通常是系统时间。使用processing time会达到最低延迟,但数据乱序时可能会导致结果不准确。
Event Time是事件发生的时间。使用event time时必须指定如何生成watermark.

Event Time and Watermarks

watermark也是data stream中的一条记录,带着一个时间戳t,表示所有在t之前发生的事件都已经到达,operator可以进行计算了。在乱序的stream中,watermark是必须的,否则计算过程永远不会被触发。

Watermarks in Parallel Streams

watermark由source function产生,而每个并行的source function是独立生成watermark的。operator收到watermark后更新自己的event time,并向下游operator发出一个新的watermark. 如果一个operator有多个input stream, 它会取较小的watermark的时间作为自己的event time.(因为如果以较大的为准会导致另一个stream中的数据丢失)

Lateness

如果一个event time为t' < t的事件在watermark之后到达,则称它迟到了。迟到的数据有几种处理方法:

  1. 丢弃
  2. 统一输出到一个output stream
  3. 设置一个迟到等待期,将迟到等待期内到达的数据更新到计算结果中。

Windowing

对一个无界流做聚合操作是不现实的,如你不能求一个无界流数据的和,所以我们需要设置一个窗口,仅对窗口内的数据做聚合操作。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容