我有一个用例来对这两个主题进行多次连接,
让我们说,我有主题A(2个分区)和主题B(2个分区)并运行KafkaStreams应用程序的单个实例。
我有一个用例来查找两个主题之间的休息,遗漏和错过,所以我正在执行以下3个操作,
A.join(B)
B.leftJoin(A)
A.leftJoin(B)
根据文档,将为每个拓扑创建两个任务(max(2,2))和总共6个任务,即
1. A.join(B) - two tasks created - each task is assigned two
partitions
2. B.leftJoin(A) - two tasks created - each task is assigned
two partitions
3. A.leftJoin(B) - two tasks created - each task is
assigned two partitions
由于我正在运行单个实例,为了扩展,我计划配置num.stream.threads = 6,并为每个线程分配一个任务。
我的上述理解是否正确?如果我错了,请纠正我。
先谢谢。
此致 Sathish
答案 0 :(得分:1)
来自汇合文件:
Kafka Streams提供的默认实现是 DefaultPartitionGrouper,为每个任务分配最多一个 每个源主题分区的分区;因此, 生成的任务数等于最大分区数 在输入主题中。 [1]
因此,如果您没有覆盖partition.grouper
配置,则任务数量应为2。
链接: [1] http://docs.confluent.io/current/streams/developer-guide.html#optional-configuration-parameters