Apache kafka 如何在kafka流上实现分组转换

Apache kafka 如何在kafka流上实现分组转换,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,在kafka流上应用groupBy()或groupByKey()时,会得到一个KGroupedStream对象。是否可以在一个时间窗口内具体化该对象,并将分组数据写入主题?您可以编写自定义聚合器,将groupedStream具体化为KTable。它将具有列表格式的分组记录。之后可以将其发布到卡夫卡主题 KTable<K, ArrayList<V>> groupedTable = streamObject.groupByKey().aggregate(

在kafka流上应用groupBy()或groupByKey()时,会得到一个KGroupedStream对象。是否可以在一个时间窗口内具体化该对象,并将分组数据写入主题?

您可以编写自定义聚合器,将groupedStream具体化为KTable。它将具有列表格式的分组记录。之后可以将其发布到卡夫卡主题

KTable<K, ArrayList<V>> groupedTable = streamObject.groupByKey().aggregate(
            // Custom Initializer
            ArrayList::new,
            // aggregator
            (key, value, list) -> {
                list.add(value);
                return list;
            }, new ArrayListSerde<V>(serdeType), storageName);
groupedTable.through(newTopic);
// Or convert into stream and publish
groupedTable.toStream().to(newTopic);
KTable groupedTable=streamObject.groupByKey().aggregate(
//自定义初始值设定项
ArrayList::新,
//聚合器
(键、值、列表)->{
列表。添加(值);
退货清单;
},新的ArrayListSerde(serdeType),storageName);
分组表到(新主题);
//或者转换成流并发布
groupedTable.toStream().to(newTopic);