[英]Flink best way to group records by field id
我正在設置與Kafka代理連接的Apache Flink。
我以隨機順序收到以下消息:
我來自Kafka的記錄有一個index
字段。
在我的應用程序中,我需要計算出具有相同ID的最后兩個記錄,然后立即發送響應。
例如,這兩個:
存儲和計算具有相同索引字段的最后兩個記錄的最佳方法是什么? 你能告訴我一些提示嗎?
您的要求尚不完全清楚,但是您可能想了解的機制是使用keyBy(e -> e.index)
按索引字段keyBy(e -> e.index)
進行分組/分區,並使用鍵控狀態來記住上一個(或兩個)事件對於索引的每個值。
如果您需要考慮時間戳,並且事件流是亂序的,即使在索引的單個值之內,那么您將需要首先按時間戳對流進行排序。 在這種情況下,如果您使用Flink SQL進行排序,您將擁有更加輕松的時間,然后您可以使用match_recognize進行模式識別,盡管對於這樣一個簡單的模式而言,這可能會顯得有些過時 。 這是如何進行排序的示例 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.