I think that's how it works. If you want to split the traffic, I believe
there's a way to emit to specific streams, which means you'd have an
intermediary bolt that round robins between N output streams, and each one
of your bolts that you're creating would subscribe to one of those streams.



On Wed, Jul 16, 2014 at 4:40 PM, Andrew Xor <[email protected]>
wrote:

> ​
> Hi Tomas,
>
>  As I said in my previous mail the grouping is for a bolt *task* not for
> the actual number of spawned bolts; for example let's say you have two
> bolts that have a parallelism hint of 3 and these two bolts are wired to
> the same spout. If you set the bolts as such:
>
> tb.setBolt("b1", new ExampleBolt(), 2 /* p-hint
> */).shuffleGrouping("spout1");
> tb.setBolt("b2", new ExampleBolt(), 2 /* p-hint
> */).shuffleGrouping("spout1");
>
> Then each of the tasks will receive half of the spout tuples but each
> actual spawned bolt will receive all of the tuples emitted from the spout.
> This is more evident if you set up a counter in the bolt counting how many
> tuples if has received and testing this with no parallelism hint as such:
>
> tb.setBolt("b1", new ExampleBolt(),).shuffleGrouping("spout1");
> tb.setBolt("b2", new ExampleBolt()).shuffleGrouping("spout1");
>
> Now you will see that both bolts will receive all tuples emitted by
> spout1.
>
> Hope this helps.
>
> ​
> ​Andrew.​
>
>
> On Thu, Jul 17, 2014 at 2:33 AM, Tomas Mazukna <[email protected]>
> wrote:
>
>> Andrew,
>>
>> when you connect your bolt to your spout you specify the grouping. If you
>> use shuffle grouping then any free bolt gets the tuple - in my experience
>> even in lightly loaded topologies the distribution amongst bolts is pretty
>> even. If you use all grouping then all bolts receive a copy of the tuple.
>> Use shuffle grouping and each of your bolts will get about 1/3 of the
>> workload.
>>
>> Tomas
>>
>>
>> On Wed, Jul 16, 2014 at 7:05 PM, Andrew Xor <[email protected]>
>> wrote:
>>
>>> H
>>> ​i,
>>>
>>>  I am trying to distribute the spout output to it's subscribed bolts
>>> evenly; let's say that I have a spout that emits tuples and three bolts
>>> that are subscribed to it. I want each of the three bolts to receive 1/3
>>> rth of the output (or emit a tuple to each one of these bolts in turns).
>>> Unfortunately as far as I understand all bolts will receive all of the
>>> emitted tuples of that particular spout regardless of the grouping defined
>>> (as grouping from my understanding is for bolt *tasks* not actual bolts).
>>>
>>>  I've searched a bit and I can't seem to find a way to accomplish
>>> that...​ is there a way to do that or I am searching in vain?
>>>
>>> Thanks.
>>>
>>
>>
>>
>> --
>> Tomas Mazukna
>> 678-557-3834
>>
>
>

Reply via email to