[英]Apache Kafka 1.0.0 Streams API Multiple Multilevel 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.