一、摘要
如果想使用Flink,Flink的Watermark是很难绕过去的概念。本文帮大家梳理Watermark概念
二、Watermark疑问
1、Flink应用的常见需求是什么
如公司运营一个官网,想统计下过去一分钟有多少用户访问官网。一分钟可以理解为Flink的窗口,在这一分钟统计有多少用户。
窗口的作用就是为了周期性获取数据,把传入的流数据根据时间切分成多个桶(buckets)
2、Flink使用窗口后,带来的问题
因为流式数据想要按照窗口做统计。因为网络延迟、乱序等原因可能导致客户端发送的某条数据延迟到达服务器。
而处理乱序的数据,则需要用到Watermark、allowedLateness、sideOutPut技术
Watermark:为了防止数据乱序的处理机制
allowedLateness:将窗口再延迟一段时间,比如等2分钟延迟的数据,2分钟到的可以继续计算
sideOutputLateData:最后兜底操作,窗口真正关闭后,延迟数据再过来,则输出到侧输出流。侧输出流数据可以在单独处理或丢弃
数据处理流程总结:Windows--> Watermark--> allowedLateness--> sideOutputLateData
数据处理流程描述:用Windows把流数据分块处理,用Watermark确定什么时候不再等待更早的数据/触发窗口进行计算,用allowLateNess 将窗口关闭时间再延迟一段时间。用sideOutPut 最后兜底把数据导出到其他地方。
3、
标签:窗口,Watermark,白话,Flink,数据,乱序,延迟 From: https://www.cnblogs.com/robots2/p/17428618.html