They could potentially be re-used if the stream forks at that point or if there are multiple aggregators chained together.
On Sat, Dec 21, 2013 at 4:24 PM, Adam Lewis <[email protected]> wrote: > Okay...what I've suggested isn't the cleanest seeming and I'm happy to > move to a less...smelly solution, but I'm unclear on how those values would > get reused. I'm not touching objects pointed to by the original tuple, > only mutating the object created in the init method of the > CombinerAggregator. > > Just to better my understanding of how storm/trident works, in what > circumstances could those values be reused? > > Thanks. > > > On Sat, Dec 21, 2013 at 5:49 PM, Nathan Marz <[email protected]>wrote: > >> You shouldn't do that. Those input values could potentially be re-used >> for other operations. I would recommend looking into using persistent data >> structures. >> >> >> On Sat, Dec 21, 2013 at 6:42 AM, Adam Lewis <[email protected]> wrote: >> >>> Hi All, >>> >>> When implementing CombinerAggregator in Trident, >>> is >>> there any issue with aggregating in >>> place? That is, something like this: >>> >>> >>> public class >>> MyAgg >>> implements CombinerAggregator< >>> MyMutable >>> > { >>> >>> >>> public MyMutable combine(MyMutable val1, MyMutable val2) { >>> >>> val1.mergeInPlace(val2); >>> return val1; >>> >>> } >>> >>> ... >>> >>> } >>> >>> In my use case the values are somewhat elaborate structurally, and >>> combining them in place is a lot more efficient...this seems to be working >>> fine in local mode, but I can't find any indication if this is a sound >>> practice before I commit to it. >>> >>> >>> Thanks, >>> Adam >>> >>> >>> >> >> >> -- >> Twitter: @nathanmarz >> http://nathanmarz.com >> > > -- Twitter: @nathanmarz http://nathanmarz.com
