我不明白如何在Apache Storm中拆分流.例如,我有一个螺栓A,经过一些计算后有somevalue1,somevalue2和somevalue3.它想将somevalue1发送到bolt B,somevalue2发送到bolt C,somevalue1,somevalue2发送到bolt D.如何在Storm中执行此操作?我将使用什么分组以及拓扑结构会是什么样的?预先感谢您的帮助.
zen*_*eni 53
如果你的情况需要,你可以使用不同的流,它不是真的分裂,但你会有很大的灵活性,你可以使用它来实现基于内容的路由,例如:
您在bolt中声明了流:
@Override
public void declareOutputFields(final OutputFieldsDeclarer outputFieldsDeclarer) {
outputFieldsDeclarer.declareStream("stream1", new Fields("field1"));
outputFieldsDeclarer.declareStream("stream2", new Fields("field1"));
}
Run Code Online (Sandbox Code Playgroud)
您从所选流的螺栓中发射:
collector.emit("stream1", new Values("field1Value"));
Run Code Online (Sandbox Code Playgroud)
您可以通过拓扑侦听正确的流
builder.setBolt("myBolt1", new MyBolt1()).shuffleGrouping("boltWithStreams", "stream1");
builder.setBolt("myBolt2", new MyBolt2()).shuffleGrouping("boltWithStreams", "stream2");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11383 次 |
| 最近记录: |