有没有办法在Kafka流中重新分配输入主题?

时间:2018-03-30 17:44:11

标签: apache-kafka apache-kafka-streams

我有一个由byte []键入的主题,我想重新分区并通过邮件正文中字段中的另一个键处理主题。

我发现有KGroupedStreamgroupby功能。但它要求聚合函数转换为KTable / KStream。我不需要聚合。我只想重新分区并处理输出。

2 个答案:

答案 0 :(得分:3)

是的,你可以。您设置了一个新密钥,然后通过另一个主题管道数据。

KStream stream = ...
KStream repartionedStream = stream.selectKey(...)
                                  .through("topic-name");

请注意,在使用所需数量的分区启动应用程序之前,您需要创建在through()中使用的主题。

答案 1 :(得分:0)

不确定这是否完全符合犹太标准,但可以正常工作,并且自动创建重新分区主题,并使用stream分配正确数量的分区。

KTable emptyTable = someTable.filter((k, v) -> false);
KStream stream = ...
KStream repartionedStream = stream.selectKey(...)
                            .leftJoin(emptyTable, (v, Null) -> v, ...);