我想在storm中实现以下拓扑:
a1->a2->a3->a4
| |
-<----<--
b1->b2->b3->b4
| |
-<----<--
注意,a1、b1和a2、b2等是相同的螺栓。有两个相同的流,但是在螺栓之间传递的元组必须保留在流中。还有一个从a4->a2,b4->b2的回路。
为了实现独立的流,我想到在streamid字段上使用fieldsgrouping,或者为每个流创建一个独立的streamid。后一种选择似乎更好,但我下面的实现似乎不雅。
builder.setBolt("a2", new A2(), 1).shuffleGrouping("a1", "streamA");
builder.setBolt("b2", new B2(), 1).shuffleGrouping("b1", "streamB");
然后以同样的方式继续执行第二个要求:
builder.setBolt("a2", new A2(), 1).shuffleGrouping("a4", "stream1");
有更好的办法吗?
2条答案
按热度按时间ufj5ltwl1#
我在实现中看到的唯一问题是有2个a2示例,这是不必要的。你可以
j2cgzkjk2#
最后我用directgrouping和不同的流来做这个。所以有一条流从a1->a2->a3->a4,另一条流从a4->a2。这样我就可以确保没有元组在a和b组之间传递。