风暴中某一特定河流上的野外群

js81xvg6  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(291)

我可以看到我们已经为storm中的一个特定流提供了shufflegroup,如下所述:如何在apachestorm中分割流?

builder.setBolt("myBolt1", new MyBolt1()).shuffleGrouping("SpoutWithStreams", "stream1");

但是我有一个用例,我想在一个喷口发出的特定流上进行字段分组。
例如,spoutwithstreams发出带有随机词的stream1,我希望mybolt1订阅此流,但我也希望mybolt1的特定示例接收相同的词,即我希望stream1上的fieldsgrouping。
所以我想要的是这样的:

builder.setBolt("myBolt1", new MyBolt1()).fieldsGrouping("boltWithStreams", "stream1","field");

我不想只为了场上的分组而多加一个螺栓。还有别的选择吗?

mnemlml8

mnemlml81#

由于没有明确的问题,我将猜测你的意思,并试图回答。
我猜你想在你的箭中接收两个流,其中一个流是从另一个箭中随机组合而来,另一个流是从喷口中组合而来的田地。
如果是这样,你可以这样做:

builder.setBolt("myBolt1", new MyBolt1()).shuffleGrouping("boltWithStreams", "stream1").fieldsGrouping("spout", "stream2", new Fields("field"));

然后在bolt中,您可以使用以下方法来区分元组属于一个流还是另一个流:

if (tuple.getSourceStreamId().equals("stream1"){
    //do something
} else if (tuple.getSourceStreamId().equals("stream2"){
    //do something else
}

相关问题