我正在设置与Kafka代理连接的Apache Flink。
我随机收到以下消息:
我来自Kafka的记录有一个index
字段。
在我的应用程序中,我需要计算出具有相同ID的最后两条记录,然后立即发送响应。
例如,这两个:
用相同的索引字段存储和计算最后两个记录的最佳方法是什么?你能告诉我一些提示吗?
答案 0 :(得分:0)
您的要求尚不完全清楚,但是您可能想了解的机制是使用keyBy(e -> e.index)
按索引字段对流进行分组/分区,并使用keyed state记住上一个事件(或两个),用于索引的每个值。
如果您需要考虑时间戳,并且事件流是乱序的,即使在索引的单个值之内,那么您将需要首先按时间戳对流进行排序。在这种情况下,如果您使用Flink SQL进行排序,您将拥有更轻松的时间,然后您可以使用match_recognize来进行模式识别,尽管对于这样一个简单的模式而言,这可能会显得有些过头。这是example进行排序的方法。