假设只是说在kafka流中没有groupby函数。我可以执行以下操作来获得字数统计并在其上构建一个KTable吗?请注意,我在拓扑中两次使用了“单词计数主题”。我有一个用例,其中我想迭代地构建某些内容,对于下一个流事件,我想查找以前的值并根据事件更新它。我希望在构建Ktable的主题中保留最新的价值。
KTable<String,Long> wordCountTable = builder.table("word-count-topic",Consumed.with(Serdes.String(), Serdes.Long()));
KStream<String,String> wordsStream = builder.stream("words-topic",Consumed.with(Serdes.String(), Serdes.String()));
KStream<String,String> msgStream = wordsStream
.flatMapValues(textLine -> Arrays.asList(textLine.toLowerCase().split("\\W+")))
.selectKey((k,v) -> v);
msgStream.leftJoin(kTable, (word,count) -> {
if( count == null) return new WordCount(word, Long.valueOf(1));
else return new WordCount(word, count + 1);
})
.mapValues((k,v)-> v.getCount())
.to("word-count-topic", Produced.with(Serdes.String(), Serdes.Long()));
streams = new KafkaStreams(builder.build(), props);
streams.start();
答案 0 :(得分:0)
应该可以。为什么不只运行代码?