我目前正在使用Flink 1.0编写聚合用例,作为用例的一部分,我需要计算过去10分钟记录的api的数量。
我可以轻松地使用keyBy(“api”)然后应用10分钟的窗口和doe sum(count)操作。
但问题是我的数据可能会出现故障,所以我需要一些方法在10分钟的窗口内获取api的数量..
例如:如果相同的api日志来自2个不同的窗口,我应该得到一个全局计数,即2,而不是两个单独的记录,每个窗口的计数为1。
我也不想要增量计数,即每个具有相同键的记录多次显示,计数等于增量值。
我希望记录显示一次全局计数,例如Spark中的updateStateByKey()。
我们可以这样做吗?
答案 0 :(得分:0)
You should have a look at Flink's event-time feature which produces consistent results for out-of-order streams. Event-time means that Flink will process data depending on timestamps that are part of the events and not depending on the machines wall-clock time.
If you you event-time (with appropriate watermarks). Flink will use automatically handle events that arrive out-of-order.