流数据Flink中的全局聚合



我目前正在使用Flink 1.0编写一个聚合用例,作为用例的一部分,我需要获得最近10分钟内记录的api的计数。

这我可以使用keyBy("api")轻松完成,然后应用10分钟的窗口和doe sum(count)操作。

但问题是我的数据可能会出问题,所以我需要一些方法来获得10分钟窗口内的api计数。。

例如:如果同一个api日志出现在两个不同的窗口中,我应该得到一个全局计数,即它的2,而不是两个单独的记录,每个窗口的显示计数为1。

我也不想要增量计数,即具有相同键的每条记录显示多次,计数等于增量值。。

我希望记录显示一次全局计数,类似于Spark中的updateStateByKey()。

我们能做到吗?

您应该了解Flink的事件时间功能,该功能可以为无序流生成一致的结果。事件时间意味着Flink将根据时间戳处理数据,时间戳是事件的一部分,而不是机器的墙上时钟时间。

如果您的活动时间(带有适当的水印)。Flink将使用自动处理无序到达的事件。

最新更新