开发者社区> 问答> 正文

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

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

展开
收起
赵慧@ApacheFlink中文社区 2018-10-18 13:15:56 6696 0
1 条回答
写回答
取消 提交回答
  • 谢进超: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 超过窗口结束时间才能确保触发

    2019-07-17 23:09:10
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载