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 >> >>
