请教问题 利用BoundedOutOfOrdernessTimestampExtractor 进行每五秒统计一次数据(数据来源socket),发现最近一条记录不会被触发统计,只有当下一条数据写入,之前的数据才会被触发统计,请问是什么原因?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

请教问题 利用BoundedOutOfOrdernessTimestampExtractor 进行每五秒统计一次数据(数据来源socket),发现最近一条记录不会被触发统计,只有当下一条数据写入,之前的数据才会被触发统计,请问是什么原因?

赵慧 2018-10-18 13:15:56 3021

转自钉钉群21789141:请教问题 利用BoundedOutOfOrdernessTimestampExtractor 进行每五秒统计一次数据(数据来源socket),发现最近一条记录不会被触发统计,只有当下一条数据写入,之前的数据才会被触发统计,请问是什么原因?

分享到
取消 提交回答
全部回答(1)
  • 赵慧
    2019-07-17 23:09:10

    谢进超:Watermark是随数据产生的,窗口时间现在处于什么位置看Watermark,只有新产生的一条数据超出窗口长度,这个窗口才会触发计算,简单的说需要一条数据来看现在是什么时间
    问:image
    徐涛:窗口被触发的时间是什么呢?是watermark超过了窗口的end就会被触发吗?
    因为这样才能确保没有记录再落到这个窗口里了吧
    问:个人理解 假设窗口时间是5秒 分配成:0-5 等他检查到watermark大于5的时候会被触发 但是现在watermark可能一直是1 所以一直不触发
    徐涛:因为你的第一条数据一定是小于窗口的结束时间的, 如果第一条就触发了窗口,你怎么知道还有没有数据也是落在这个窗口里面呢?
    万一有的话,你的窗口已经触发了,那这个数据就没有被纳入计算。
    莱昂:如果还有数据落在窗口里 你可以设置延迟时间啊
    image
    然后获取sideoutput就可以获取到延迟数据了啊
    https://ci.apache.org/projects/flink/flink-docs-release-1.5/dev/stream/operators/windows.html
    问:其实我本来期望的是 假设5秒钟 到了落入窗口的最后时间 就触发 然后发现BoundedOutOfOrdernessTimestampExtractor 的watermark需要新的记录进来跟新的 所以发现一开始的理解错了
    徐涛:嗯,窗口到时间就触发只是一种理想情况,实际因为有乱序,只有确保watermark 超过窗口结束时间才能确保触发

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章