Thanks Srinath, I have already started using this approach. ( i.e
emitting multiple tuples , and doing field grouping in respective
bolts for my required string key).
Thought there could be some other way too.

On Wed, Mar 19, 2014 at 9:31 PM, Srinath C <srinat...@gmail.com> wrote:
> You can have Bolt1 do:
>
> public void execute(Tuple input) {
> Class1 class1Instance = (Class1)input.getValueByField("JmsSpoutTuple");
> collector.emit(new Values(class1Instance.class1Key1, class1Instance));   //
> emit 2 values - class1Key1 and class1Instance
> }
>
> Then do field grouping for "class1Key1" into Bolt2.
>
>
>
> On Wed, Mar 19, 2014 at 9:26 PM, Binita Bharati <binita.bhar...@gmail.com>
> wrote:
>>
>> Anyone has any idea on this please ?
>>
>> Thanks
>>
>> On Mon, Mar 17, 2014 at 1:34 PM, Binita Bharati
>> <binita.bhar...@gmail.com> wrote:
>> > Code sample :
>> >
>> > Topology :
>> > ===================================
>> > TopologyBuilder builder = new TopologyBuilder();
>> >
>> > builder.setSpout("epd-spout",new MyJmsSpout());
>> >
>> > builder.setBolt("epd-CPY001-bolt1", new Bolt1("CPY001"),
>> > parallelismHintMap.get("CPY001"))
>> > .shuffleGrouping("epd-spout");
>> >
>> >  builder.setBolt("epd-CPY001-bolt2", new Bolt2("CPY001"),
>> > parallelismHintMap.get("CPY001"))
>> > .fieldsGrouping("epd-CPY001-bolt1", new Fields("Bolt1Tuple"));
>> >
>> >
>> > Bolt1:
>> > ====================================
>> > public void declareOutputFields(OutputFieldsDeclarer declarer) {
>> > // TODO Auto-generated method stub
>> > declarer.declare(new Fields("Bolt1Tuple"));
>> > }
>> >
>> > public void execute(Tuple input) {
>> > Class1 class1Instance = (Class1)input.getValueByField("JmsSpoutTuple");
>> > collector.emit(new Values(class1Instance));
>> > }
>> >
>> >
>> > Bolt2:
>> > ======================================
>> > public void execute(Tuple input) {
>> > Class1 class1Instance = (Class1)input.getValueByField("Bolt1Tuple");
>> >
>> > }
>> >
>> > On Mon, Mar 17, 2014 at 1:19 PM, Binita Bharati
>> > <binita.bhar...@gmail.com> wrote:
>> >> Hi ,
>> >>
>> >> I have a Bolt1 that emits a tuple of type a.b.c.MyClass1. MyClass1 has
>> >> a String field - class1Key1.
>> >> I need to segregate all tuples having same value for
>> >> a.b.c.MyClass1:class1Key1 into a specific task in another Bolt2.
>> >>
>> >> How do I go about defining such a topology ? I have seen egs where
>> >> tuples emitted were simple string values. But, my emitted tuple is a
>> >> Class instance , and the field on which I want to do fieldGrouping is
>> >> a particular field of that Class.
>> >>
>> >> (I tried defining a equals and hashcode method in a.b.c.MyClass1.
>> >> Didn't work as expected..)
>> >>
>> >> Thanks
>> >> Binita
>
>

Reply via email to