Apache storm 如何在Apache Storm中分割流?

Apache storm 如何在Apache Storm中分割流?,apache-storm,Apache Storm,我不明白如何在Apache Storm中分割流。例如,我有一个螺栓A,经过一些计算后,它有somevalue1、somevalue2和somevalue3。它想把一些值1发送到螺栓B,一些值2发送到螺栓C,一些值1,一些值2发送到螺栓D。在暴风雨中我该怎么做?我将使用什么分组?我的拓扑结构是什么样的?提前感谢您的帮助 这里有两个选项:和“直接分组”。根据您的要求,其中一个将为您提供服务 看看WordCountTopology示例项目,看看这是否就是您想要的。否则,“直接分组”将是更好的选择 但同

我不明白如何在Apache Storm中分割流。例如,我有一个螺栓A,经过一些计算后,它有somevalue1、somevalue2和somevalue3。它想把一些值1发送到螺栓B,一些值2发送到螺栓C,一些值1,一些值2发送到螺栓D。在暴风雨中我该怎么做?我将使用什么分组?我的拓扑结构是什么样的?提前感谢您的帮助

这里有两个选项:和“直接分组”。根据您的要求,其中一个将为您提供服务

看看WordCountTopology示例项目,看看这是否就是您想要的。否则,“直接分组”将是更好的选择


但同样,选择分组策略取决于您的需求

如果您的案例需要,您可以使用不同的流,它不是真正的拆分,但您将具有很大的灵活性,您可以将其用于基于内容的bolt路由,例如:

您可以在bolt中声明流:

@Override
public void declareOutputFields(final OutputFieldsDeclarer outputFieldsDeclarer) {
    outputFieldsDeclarer.declareStream("stream1", new Fields("field1"));
    outputFieldsDeclarer.declareStream("stream2", new Fields("field1"));
}
从选定流上的螺栓发射:

collector.emit("stream1", new Values("field1Value"));
您可以通过拓扑收听正确的流

builder.setBolt("myBolt1", new MyBolt1()).shuffleGrouping("boltWithStreams", "stream1");
builder.setBolt("myBolt2", new MyBolt2()).shuffleGrouping("boltWithStreams", "stream2");

“三叉戟”中是否有类似的东西?@zenbeni当你从闪电中发射出新的能量流时,你并没有锚定它。在这种情况下,是否形成了单独的树?如果“stream1”中出现故障,喷口或螺栓是否会知道出现了任何错误?锚定时,可以向流发射-有一个额外的emit方法重载。