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

时间:2018-07-27 10:56:40

标签: apache-kafka apache-kafka-streams

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

1 个答案:

答案 0 :(得分:0)

您可以编写自定义聚合器,以将groupedStream落实到KTable中。它将具有列表格式的分组记录。以后可以将其发布到kafka主题。

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);