You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@storm.apache.org by Hermann Gábor <re...@gmail.com> on 2015/07/15 14:10:59 UTC

presistentAggregate problem

Hi all,

I've been trying to set up a really simple Trident topology to try
*persistentAggregate* with a ReducerAggregator based on the examples found
in the docs and I might have got something wrong because my topology fails
with ArrayIndexOutOfBoundsException when trying to retrieve a value from a
tuple at the *reduce* function.

Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at storm.trident.tuple.TridentTupleView.getValue(TridentTupleView.java:258)
~[storm-core-0.11.0-SNAPSHOT.jar:0.11.0-SNAPSHOT]
at
hu.sztaki.state.machine.paper.trident.DummyTridentTopology$1.reduce(DummyTridentTopology.java:44)
~[classes/:?]
at
hu.sztaki.state.machine.paper.trident.DummyTridentTopology$1.reduce(DummyTridentTopology.java:38)
~[classes/:?]
at
storm.trident.state.ReducerValueUpdater.update(ReducerValueUpdater.java:37)
~[storm-core-0.11.0-SNAPSHOT.jar:0.11.0-SNAPSHOT]

my code is basically:

topology
.newStream("simpleSpout", new FixedBatchSpout(new Fields("A", "B"), 3,
new Values(1, 1),
new Values(2, 1),
...
))
.persistentAggregate(
new MemoryMapState.Factory(),
new ReducerAggregator<String>() {
public String init() {
  return "empty";
}

public String reduce(String curr, TridentTuple tuple) {
*  return curr + ":" + tuple.getValue(0);*
}

}, new Fields("C"));

The cause of this is an empty tuple at the reduce function, but I don't
understand why is that. Should I declare somewhere the input fields of the
persistentAggregator?

Could you please help me figuring out this?

I am using the current master branch (version 0.11.0-SNAPSHOT) but the
0.9.5 release also produces this error.
My full code can be found here <http://pastebin.com/dcbDjte8> and the
output of the execution here <http://pastebin.com/jgYfGzAZ>.

(As a note: Wouldn't it would be more convenient to throw an exception with
a more appropriate text like "No such field in tuple" to make the errors
easier to understand.)

Thanks for your help in advance.

Best regards,
Gabor Hermann

Re: presistentAggregate problem

Posted by Hermann Gábor <re...@gmail.com>.
Hey all,

Is there any update regarding this matter?

Bests,
Gabor Hermann

On Wed, Jul 15, 2015 at 2:10 PM Hermann Gábor <re...@gmail.com> wrote:

> Hi all,
>
> I've been trying to set up a really simple Trident topology to try
> *persistentAggregate* with a ReducerAggregator based on the examples
> found in the docs and I might have got something wrong because my topology
> fails with ArrayIndexOutOfBoundsException when trying to retrieve a value
> from a tuple at the *reduce* function.
>
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
> at
> storm.trident.tuple.TridentTupleView.getValue(TridentTupleView.java:258)
> ~[storm-core-0.11.0-SNAPSHOT.jar:0.11.0-SNAPSHOT]
> at
> hu.sztaki.state.machine.paper.trident.DummyTridentTopology$1.reduce(DummyTridentTopology.java:44)
> ~[classes/:?]
> at
> hu.sztaki.state.machine.paper.trident.DummyTridentTopology$1.reduce(DummyTridentTopology.java:38)
> ~[classes/:?]
> at
> storm.trident.state.ReducerValueUpdater.update(ReducerValueUpdater.java:37)
> ~[storm-core-0.11.0-SNAPSHOT.jar:0.11.0-SNAPSHOT]
>
> my code is basically:
>
> topology
> .newStream("simpleSpout", new FixedBatchSpout(new Fields("A", "B"), 3,
> new Values(1, 1),
> new Values(2, 1),
> ...
> ))
> .persistentAggregate(
> new MemoryMapState.Factory(),
> new ReducerAggregator<String>() {
> public String init() {
>   return "empty";
> }
>
> public String reduce(String curr, TridentTuple tuple) {
> *  return curr + ":" + tuple.getValue(0);*
> }
>
> }, new Fields("C"));
>
> The cause of this is an empty tuple at the reduce function, but I don't
> understand why is that. Should I declare somewhere the input fields of the
> persistentAggregator?
>
> Could you please help me figuring out this?
>
> I am using the current master branch (version 0.11.0-SNAPSHOT) but the
> 0.9.5 release also produces this error.
> My full code can be found here <http://pastebin.com/dcbDjte8> and the
> output of the execution here <http://pastebin.com/jgYfGzAZ>.
>
> (As a note: Wouldn't it would be more convenient to throw an exception
> with a more appropriate text like "No such field in tuple" to make the
> errors easier to understand.)
>
> Thanks for your help in advance.
>
> Best regards,
> Gabor Hermann
>