闪烁CEP未检测到最后一条记录



我的代码有助于确定Flink CEP中记录的数量是否超过25。因此,当我使用进程时间时,它匹配所有模式,但当我使用事件时间时,不匹配最后一条记录。

{"trasanction_id":196,"customer_id":27,"datetime":"1576499008876","amount":6094,"state":"SUCCESS"}
{"trasanction_id":197,"customer_id":27,"datetime":"1576499017565","amount":547,"state":"SUCCESS"}
{"trasanction_id":198,"customer_id":27,"datetime":"1576499029116","amount":6824,"state":"SUCCESS"}
{"trasanction_id":196,"customer_id":27,"datetime":"1576499053211","amount":6094,"state":"SUCCESS"}
{"trasanction_id":197,"customer_id":28,"datetime":"1576499063867","amount":547,"state":"FAILED"}
{"trasanction_id":198,"customer_id":28,"datetime":"1576499073566","amount":6824,"state":"FAILED"}

以上是我的记录。我对在活动时间内匹配每一个金额超过25的活动感兴趣。理想情况下,它应该检测所有记录(在处理时间中这样做(,因为所有记录的数量都大于25。到目前为止,我正在使用有界到有序时间提取技术,其中3秒用于无序。

请帮我理解这一点。提前感谢!:(

因为CEP匹配时间模式,所以在使用事件时间戳时,事件首先按时间戳顺序排序。这种排序包括缓冲每个事件,直到水印赶上该事件,以便为任何更早的事件留出时间先到达。

因为您的水印被配置为落后于流的前沿(即迄今为止最大的时间戳(3秒,所以流的水印永远不会达到上一个事件的时间戳。这就是没有处理最后一个事件的原因。Flink正在等待是否会有任何早期事件到达,并且在水印指示流在最后一个事件的时间戳之前不会放弃。

相关内容

  • 没有找到相关文章

最新更新