使用 kafkastream 聚合方法时数据被丢弃

Data get discarded while I am using kafkastream aggregate method

最近在使用kafkastream的TimeWindowedKStream聚合方式时遇到了一个棘手的问题。现象是我把我的程序停了5分钟,然后又重新启动了。我发现我的一小部分数据丢失了,并得到以下提示,“Skipping record for expired window”。所有数据都是想要保存的正常数据,没有大的延迟。我该怎么做才能防止数据被丢弃?好像kafkastream得到observedstreamtime

的时间比较晚

错误消息意味着 window 已经关闭——因此您需要增加 GRACE,正如@groo 所指出的。 -- 数据过期是基于 event-time 所以停止你的程序并稍后恢复应该不会有太大变化。

但是,如果在聚合之前有一个重新分区主题,如果你停止你的程序一段时间,重新分区主题中的数据可能会更多out-of-order,因为输入主题的读取速度比在“直播 运行”中——追赶期间增加的无序可能是问题所在。