簡體   English   中英

Flink按字段ID對記錄進行分組的最佳方法

[英]Flink best way to group records by field id

我正在設置與Kafka代理連接的Apache Flink。

我以隨機順序收到以下消息:

  • 消息(時間戳= [..],索引= 1,someData = [..])
  • 消息(時間戳= [..],索引= 2,someData = [..])
  • 消息(時間戳= [..],索引= 3,someData = [..])
  • 消息(時間戳= [..],索引= 2,someData = [..])
  • 消息(時間戳= [..],索引= 3,someData = [..])
  • 消息(時間戳= [..],索引= 1,someData = [..])

我來自Kafka的記錄有一個index字段。

在我的應用程序中,我需要計算出具有相同ID的最后兩個記錄,然后立即發送響應。

例如,這兩個:

  • 消息(時間戳= [..],索引= 1,someData = [..])
  • 消息(時間戳= [..],索引= 1,someData = [..])

存儲和計算具有相同索引字段的最后兩個記錄的最佳方法是什么? 你能告訴我一些提示嗎?

您的要求尚不完全清楚,但是您可能想了解的機制是使用keyBy(e -> e.index)按索引字段keyBy(e -> e.index)進行分組/分區,並使用鍵控狀態來記住上一個(或兩個)事件對於索引的每個值。

如果您需要考慮時間戳,並且事件流是亂序的,即使在索引的單個值之內,那么您將需要首先按時間戳對流進行排序。 在這種情況下,如果您使用Flink SQL進行排序,您將擁有更加輕松的時間,然后您可以使用match_recognize進行模式識別,盡管對於這樣一個簡單的模式而言,這可能會顯得有些過時 這是如何進行排序的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM