Thank you

While asking this question, I have actually implemented a quick and dirty
combinator that combine a pair, and that's working. But there is a lot of
edge cases (I think) and so I'm not satisfied with it. Will need a lot more
work.

As for your first suggestion, this unfortunately does not work :

Trying to select non-existent field: 'some_int_2' from stream containing
fields fields: <[user, total_some_int_1]>

What's the purpose of newValuesStream() then ?


2014-07-09 19:20 GMT+02:00 Sam Goodwin <[email protected]>:

> This may work.
>
> myStream.groupBy(new Fields("user"))
>         .persistentAggregate(new MemoryMapState.Factory(),
>                              new Fields("some_int_1"),
>                              new Sum(),
>                              new Fields("total_some_int_1")
>         .newValuesStream()
>         .persistentAggregate(new MemoryMapState.Factory(),
>                              new Fields("some_int_2"),
>                              new Sum(),
>                              new Fields("total_some_int_2");
>
> You could also create your own Function to combine 1 and 2 into a single
> object and implement your own CombinerAggregator for it. This is how you
> could do it with only one aggregate step and it also lets your store the
> values together.
>
>
> On Wed, Jul 9, 2014 at 7:38 AM, c_inconnu <[email protected]> wrote:
>
> Hi,
>>
>> I'm new to trident and I'm trying to solve the following use case. I've
>> read several times the documentation and I've been quite deep in the code
>> base but couldn't figure out how to do it...
>>
>> My input tuples have the keys (user, some_int_1, some_int_2).
>> My output should be the sum of some_int_1 and the sum of some_int_2 (two
>> fields, not one) by user, ie. (user, total_some_int_1, total_some_int_2).
>>
>> I've tried something like that:
>>
>> myStream.groupBy(new Fields("user"))
>>         .persistentAggregate(new MemoryMapState.Factory(),
>>                              new Fields("some_int_1", "some_int_2"),
>>                              new Sum(),
>>                              new Fields("total_some_int_1", "total_
>> some_int_2"))
>>
>> but got
>>
>> Exception in thread "main" java.lang.IllegalArgumentException: Combiner
>> aggs only take a single field as input. Got this instead: [
>> total_some_int_1, total_some_int_2]
>>
>> what is the correct way of doing this ?
>> thanks
>>
>>

Reply via email to