我想将“字段分组”以及“本地或随机分组”应用于我的拓扑,以便每个 spout 仅将数据发送到本地螺栓,但也使用我文档中的一个字段来决定它应该去哪些本地螺栓。
因此,如果有两个工作进程,每个进程都有 1 个 Kafka-Spout 和 2 个 elastic-search-bolts,则 local-or-shuffle 分组会给我以下信息:
Each KS ---> Two local ES-Bolts
fields-grouping 给了我以下信息:
Each KS ---> Possibly all 4 ES-bolts, depending on the value of the field
但我想要以下内容:
Each KS ---> Two local ES-bolts only, but distribution among these
local bolts should depend on the value of the field
在哪里:
KS = Kafka-Spout
ES = 弹性搜索
我想这样做,以便我可以在 ES-bolt 中将单个分片的所有文档分组在一起。这样,ES-bolt 发送的批次不会被 ES-server 进一步拆分,因为所有这些文档的目标分片都是相同的(我计划将字段destination_shard添加到文档以进行字段级分组,并且将计算destination_shard作为Murmurm3.hash(ID)%numShards )。
然后我不想要任何进程间通信,因此需要“本地或随机分组”
谢谢您的帮助 !