1

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

我可以使用 keyBy("api") 轻松做到这一点,然后应用 10 分钟的窗口并执行 sum(count) 操作。

但问题是我的数据可能出现乱序,所以我需要一些方法来获取 10 分钟窗口内的 api 计数..

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

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

我希望记录以全局计数显示一次,例如 Spark 中的 updateStateByKey() 。

我们可以这样做吗?

4

1 回答 1

1

你应该看看 Flink 的事件时间特性,它为乱序流产生一致的结果。事件时间意味着 Flink 将根据作为事件一部分的时间戳来处理数据,而不是取决于机器的挂钟时间。

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

于 2016-04-07T10:27:56.710 回答