我可以看到我们已经为Storm中的特定流提供了shuffleGrouping,如下所述:How would I split a stream in Apache Storm?
builder.setBolt("myBolt1", new MyBolt1()).shuffleGrouping("SpoutWithStreams", "stream1");
但我有一个用例,我希望在spout发出的特定流上有fieldsGrouping。
对于Eg。 SpoutWithStreams 使用随机单词发出 stream1 ,我希望 myBolt1 订阅此流,但我还想要 myBolt1的特定实例接收相同的字词,即我想在 stream1 上填写字段。
所以我想要的是这样的:
builder.setBolt("myBolt1", new MyBolt1()).fieldsGrouping("boltWithStreams", "stream1","field");
我不想为fieldsGrouping添加额外的螺栓。还有其他选择吗?
答案 0 :(得分:0)
由于没有明确定义的问题,我会猜测你的意思并尝试回答。
我猜你想要在你的螺栓中接收两个流,其中一个流是来自另一个螺栓的shuffleGrouping,另一个流是来自喷口的fieldsGrouping。
如果是这种情况,你可以这样做:
builder.setBolt("myBolt1", new MyBolt1()).shuffleGrouping("boltWithStreams", "stream1").fieldsGrouping("spout", "stream2", new Fields("field"));
然后在你的螺栓中你可以使用:
来区分元组是属于一个流还是另一个流if (tuple.getSourceStreamId().equals("stream1"){
//do something
} else if (tuple.getSourceStreamId().equals("stream2"){
//do something else
}