使用KStream合并记录

时间:2019-01-21 16:15:57

标签: java apache-kafka apache-kafka-streams

我正在使用Java在我的第一个Kafka Stream上工作,本质上,我试图从一个主题读取记录,然后将其中许多记录的值合并到一条记录中,以写入一个单独的主题,即批量将一系列记录合并为一条记录。理想情况下,这批记录将由记录大小或记录数来控制,但此时很高兴获得一个简单的示例!我当时以为KStream.groupBy函数将是解决方案的基础,但无法提出有效的示例

1 个答案:

答案 0 :(得分:0)

如果您有一系列事件,并希望基于某个键将其合并到列表中,则可以从以下基本示例开始:

KTable<String, List<Object>> aggregatedMetrics = eventStream
        .selectKey((k,v)-> k // Pick your key here)
        .groupByKey()
        .aggregate(() -> ArrayList::new, 
         (key, value, aggregate) -> aggregate.add(value), arrayListSerde());