【发布时间】:2016-04-02 01:33:53
【问题描述】:
我想对我的拓扑应用“字段分组”以及“本地或随机分组”,这样每个 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)。
然后我不想要任何进程间通信,因此需要“本地或随机分组”
感谢您的帮助!
【问题讨论】:
标签: apache-storm elasticsearch-hadoop