1.流计算乱序问题
无限流count不会有乱序问题,分组统计才会有乱序问题
watermark是一个时间戳,标识了小于这个时间戳的事件都已经到达了
watermark水印在源位置发射,通过拓扑中的运算符传播
watermark也是streamElement 和普通数据一起在算子之间传递(可以看成一条数据)
watermak出发窗口计算,那么long.Max_value值会在公诉算子后续没有任何数据了
watermark生成方式:
1.watermark在数据源位置生成
a.与业务时间保持一致的定义
b.允许业务乱序程度不超过一分钟的定义:业务时间戳-60000
2.watermark利用 timestamp assigner/watermark generator生成watermark
timestamp assigner 有两种:AssignerWithPeriodicWatermarks和AssignerWithPunctuatedWatermarks。 https://www.cnblogs.com/ljygz/p/11435243.html
watermark的传递
如上图source1处理分区1和分区2,source2 处理17和95,其中存在一个问题,33 和88 17和95速度存在较大差距,会造成某些分区没数据了,其他窗口计算都不会触发。https://mp.weixin.qq.com/s/c4WkMQXPJDm-0Z3IkBLtag
https://mp.weixin.qq.com/s/108o9iwEZaHyMoRBGUKX8g
数据完整性和计算实时性是相互排斥的,实际业务开发需要考虑