当数据源产生的速度过快时使用AscendingTimestampExtractor并没有忽略非递增的事件时间数据

classic Classic list List threaded Threaded
2 messages Options
SSY
Reply | Threaded
Open this post in threaded view
|

当数据源产生的速度过快时使用AscendingTimestampExtractor并没有忽略非递增的事件时间数据

SSY
<http://apache-flink.147419.n8.nabble.com/file/t852/Snipaste_2020-08-12_12-05-04.png>
数据源如上图所示,6行3列。这里的逻辑是以第三列为事件事件,采用滚动窗口(10s),统计窗口内最大的第一列的时间(PS:第一列数据这里故意设置成升序),输出为“窗口内最大的第一列时间所在行的第二列的值,窗口内元素的个数”。如果一切正常,我认为结果应该是
2,2
2,5
我是用kafka来发送数据源,当发送速率为100毫秒每条数据时,结果和预期相符,如下图
<http://apache-flink.147419.n8.nabble.com/file/t852/Snipaste_2020-08-12_12-12-18.png>
但是当发送速率为1毫秒每条数据时,发现红框内的数据也被包含进来了(即第二列是4的那条数据源,本来应该被忽略),如下图
<http://apache-flink.147419.n8.nabble.com/file/t852/Snipaste_2020-08-12_12-13-59.png>
这样看来数据发送的速率不同也会影响最后的结果吗?请问这是什么原因呢?
部分程序代码如下:
<http://apache-flink.147419.n8.nabble.com/file/t852/Snipaste_2020-08-12_12-17-32.png>
<http://apache-flink.147419.n8.nabble.com/file/t852/Snipaste_2020-08-12_12-23-58.png>
<http://apache-flink.147419.n8.nabble.com/file/t852/Snipaste_2020-08-12_12-22-27.png>
<http://apache-flink.147419.n8.nabble.com/file/t852/Snipaste_2020-08-12_12-19-14.png>






--
Sent from: http://apache-flink.147419.n8.nabble.com/
SSY
Reply | Threaded
Open this post in threaded view
|

Re: 当数据源产生的速度过快时使用AscendingTimestampExtractor并没有忽略非递增的事件时间数据

SSY
我想明白了,AscendingTimestampExtractor产生的水印是周期水印,当数据源速率过快时,水印还没来得及发送,后面的数据已经进入到算子当中了,所以造成了非递增事件也会被包含在算子中。。在测试环境下,如果换成Punctuated
Watermarks对每个事件发送水印,就没问题了



--
Sent from: http://apache-flink.147419.n8.nabble.com/