From dd88fb5302e60c12e77afe5242559de40dc08207 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Thu, 9 May 2024 09:37:47 +0200 Subject: [PATCH] WIP --- .../wordcount/top10/Top10StreamProcessor.java | 35 +++++-------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/src/main/java/de/juplo/kafka/wordcount/top10/Top10StreamProcessor.java b/src/main/java/de/juplo/kafka/wordcount/top10/Top10StreamProcessor.java index f0a7d19..63357e8 100644 --- a/src/main/java/de/juplo/kafka/wordcount/top10/Top10StreamProcessor.java +++ b/src/main/java/de/juplo/kafka/wordcount/top10/Top10StreamProcessor.java @@ -1,6 +1,5 @@ package de.juplo.kafka.wordcount.top10; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.streams.KafkaStreams; @@ -25,37 +24,19 @@ public class Top10StreamProcessor StreamsBuilder builder = new StreamsBuilder(); builder - .stream(inputTopic) - .map((keyJson, countStr) -> + .stream(inputTopic) + .map((word, wordCount) -> { - try - { - Key key = mapper.readValue(keyJson, Key.class); - Long count = Long.parseLong(countStr); - Entry entry = Entry.of(key.getWord(), count); - String entryJson = mapper.writeValueAsString(entry); - return new KeyValue<>(key.getUsername(), entryJson); - } - catch (JsonProcessingException e) - { - throw new RuntimeException(e); - } + Entry entry = Entry.of(word.getWord(), wordCount.getCount()); + return new KeyValue<>(word.getUser(), entry); }) .groupByKey() .aggregate( - () -> "{\"entries\" : []}", - (username, entryJson, rankingJson) -> + () -> new Ranking(), + (user, entry, ranking) -> { - try - { - Ranking ranking = mapper.readValue(rankingJson, Ranking.class); - ranking.add(mapper.readValue(entryJson, Entry.class)); - return mapper.writeValueAsString(ranking); - } - catch (JsonProcessingException e) - { - throw new RuntimeException(e); - } + ranking.add(entry); + return ranking; } ) .toStream() -- 2.20.1