首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Storm:将流拆分到不同的螺栓

Apache Storm:将流拆分到不同的螺栓
EN

Stack Overflow用户
提问于 2017-05-22 02:24:07
回答 2查看 516关注 0票数 1

我创建了storm拓扑,我正在处理这种格式的字符串:“x-x”,其中x是某个数字。我想让串流被平均分成4个螺栓。

问题是,对于下面的代码,所有的螺栓都获得了所有的元组,而不是只将eack元组发送到一个螺栓:

代码语言:javascript
复制
builder.setSpout("digits-spout", new ReaderSpout());
builder.setBolt("level-1", new SomeBolt(1)).shuffleGrouping("digits-spout");
builder.setBolt("level-2", new SomeBolt(2)).shuffleGrouping("digits-spout");
builder.setBolt("level-3", new SomeBolt(3)).shuffleGrouping("digits-spout");
builder.setBolt("level-4", new SomeBolt(4)).shuffleGrouping("digits-spout");

如你所见,我使用相同的螺栓但不同的构造器。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2017-05-29 16:56:22

根据我从你的问题中了解到的,我可以为你的问题提供一个额外的解决方案,比如下面的例子:

代码语言:javascript
复制
builder.setSpout("digits-spout", new ReaderSpout());

builder.setBolt("stringSplitterBoltName", new 
StringSplitterBolt(1)).shuffleGrouping("digits-spout");

builder.setBolt("level-1", new 
SomeBolt(1)).shuffleGrouping("stringSplitterBoltName");

builder.setBolt("level-2", new 
SomeBolt(2)).shuffleGrouping("stringSplitterBoltName");

builder.setBolt("level-3", new 
SomeBolt(3)).shuffleGrouping("stringSplitterBoltName");

builder.setBolt("level-4", new 
SomeBolt(4)).shuffleGrouping("stringSplitterBoltName");
票数 0
EN

Stack Overflow用户

发布于 2017-12-12 02:43:18

如果你想让螺栓有不同的处理逻辑,你只需要添加4个相同螺栓的任务。在这种情况下,您将在两个螺栓实例之间随机接收消息。您可以检查该螺栓中的字符串值,并采取适当的执行路径。您将避免使用4个螺栓的单独代码库。

或者,如果你想对字符串有单独的螺栓代码,可以使用zackeriya的上面的建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44100335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档