在 Kafka 流中设置 Window[Hopping, Tumbling..etc] 并行度
Setting Window[Hopping, Tumbling..etc] Parallelism in Kafka Streams
我正在写 Kafka Streams 中的 Hopping Window 代码,其中 minMaxCalculator()
计算流中的最小值和最大值,一旦流按键分组。
KTable<Windowed<String>, aggrTest> WinMinMax = Records.groupByKey().aggregate(new aggrTestInitilizer(),
new minMaxCalculator()
, TimeWindows.of(TimeUnit.SECONDS.toMillis(5)).advanceBy(TimeUnit.SECONDS.toMillis(1)),aggrMessageSerde,"aggr-test");
一旦我按键分组,即使只有一个 kafka 分区,我也想并行处理为 中的所有键生成的 windows。我们应该怎么做?我在哪里可以设置这个对应于window的并行度?
并行度基于输入分区,不能与它们不同。因此,没有您可以设置的参数。
但是,您可以创建一个具有所需分区数的主题,并使用它进行手动重新分区 through()
:
stream.through("multi-partition-topic").groupByKey()...
查看文档了解更多详情:
我正在写 Kafka Streams 中的 Hopping Window 代码,其中 minMaxCalculator()
计算流中的最小值和最大值,一旦流按键分组。
KTable<Windowed<String>, aggrTest> WinMinMax = Records.groupByKey().aggregate(new aggrTestInitilizer(),
new minMaxCalculator()
, TimeWindows.of(TimeUnit.SECONDS.toMillis(5)).advanceBy(TimeUnit.SECONDS.toMillis(1)),aggrMessageSerde,"aggr-test");
一旦我按键分组,即使只有一个 kafka 分区,我也想并行处理为 中的所有键生成的 windows。我们应该怎么做?我在哪里可以设置这个对应于window的并行度?
并行度基于输入分区,不能与它们不同。因此,没有您可以设置的参数。
但是,您可以创建一个具有所需分区数的主题,并使用它进行手动重新分区 through()
:
stream.through("multi-partition-topic").groupByKey()...
查看文档了解更多详情: