簡體   English   中英

Kafka Streams API GroupBy 行為

[英]Kafka Streams API GroupBy behaviour

所以我一直在嘗試使用 Kafka stream 將一些 stream 數據聚合到 KTable。我的主題中的 JSON 看起來像

{
   "id": "d04a6184-e805-4ceb-9aaf-b2ab0139ee84",
   "person": {
      "id": "d04a6184-e805-4ceb-9aaf-b2ab0139ee84",
      "createdBy": "user",
      "createdDate": "2023-01-01T00:28:58.161Z",
      "name": "person 1",
      "description": "test1"
   }
}....
KStream<Object, String> firstStream = builder.stream("topic-1").mapValues(value -> {
  JSONObject json = new JSONObject(String.valueOf(value));
  JSONObject json2 = new JSONObject(json.getJSONObject("person").toString());
  return json2.toString();
});

我得到類似的東西

null{"createdDate":"2023-01-01T00:28:58.161Z","createdBy":"user","name":"person 1","description":"test1","id":"d04a6184-e805-4ceb-9aaf-b2ab0139ee84"}
null{"createdDate":"2023-01-01T00:29:07.862Z","createdBy":"user","name":"person 2","description":"test 2","id":"48d8b895-eb27-4977-9dbc-adb8fbf649d8"}
null{"createdDate":"2023-01-01T00:29:12.261Z","createdBy":"anonymousUser","name":"person 2","description":"test 2 updated","id":"d8b895-eb27-4977-9dbc-adb8fbf649d8"}

我想以這樣一種方式對這些數據進行分組,即第 1 個人將持有一個與之關聯的 JSON,第 2 個人將持有與其關聯的 JSON 的列表

我已經檢查了這個Kafka Streams API GroupBy 行為,它描述了同樣的問題,但那里給出的解決方案對我不起作用。 我必須執行任何額外的操作嗎? 請幫忙

為了groupBy ,您需要一個配對密鑰。 因此,使用map提取每個人的name

然后,正如鏈接的答案所說,您需要在分組后進行aggregate以跨事件“合並每個人的數據”。

順便說一下,您應該使用 JsonSerde 設置 Streams 配置而不是 String Serde 以減少手動解析每個事件的需要。

暫無
暫無

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

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