So you do agree that the user should handle such cases or Hama should implement different methods to keep track of previous states?
On 23 Ιαν 2014, at 11:31 π.μ., Edward J. Yoon <edwardy...@apache.org> wrote: > Yes, AbsDiffAggregator. I've uploaded a patch. > > On Thu, Jan 23, 2014 at 7:21 PM, Anastasis Andronidis > <andronat_...@hotmail.com> wrote: >> Hello, >> >> sorry I am a little bit confused. >> if I understand correctly, the problem is that we don't keep the value of >> the previous superstep? Isn't this something that the user should implement >> on his own? >> >> I'll take as an example the AbsDiffAggregator: >> >> This aggregator is taking as an input, the (old value of the vertex) - (the >> current value) and then it sums everything across all vertices. Isn't this >> the same as making the diff inside the vertex and then sending the output to >> a sum aggregator? >> >> (by the user in Vertex class) >> >> --- in the beginning of the code --- >> startV = this.getValue(); >> >> /* Code run */ >> >> this.aggregate("sum_aggr", startV - this.getValue()); >> >> If I am correct, I think that we should document this kind of behavior, so >> the users can use it. I said that I will handle the documentation on the >> wiki for the aggregators, I have it on schedule for this weekend. >> >> Cheers, >> Anastasis >> >> On 23 Ιαν 2014, at 2:30 π.μ., Edward J. Yoon <edwardy...@apache.org> wrote: >> >>> I found a bug in aggregator. >>> >>> In parseMessages, you calls masterAggregation() method. Do you think >>> everything is OK? >>> >>> /** >>> * Method to let the custom master aggregator read messages from peers and >>> * aggregate a value. >>> */ >>> @SuppressWarnings("unchecked") >>> public void masterAggregation(Text name, Writable value) { >>> String nameIdx = name.toString().split(";", 2)[1]; >>> this.Aggregators.get(nameIdx).aggregate(null, value); >>> >>> // When it's time to send the values, we can see which aggregators are >>> used. >>> this.aggregatorsUsed.add(nameIdx); >>> } >>> >>> The aggregated value will be always the last value. >>> >>> Like our old code, >>> >>> getAggregationRunner().aggregateVertex(lastValue, vertex); >>> >>> You should aggregates all values. >>> >>> -- >>> Best Regards, Edward J. Yoon >>> @eddieyoon >>> >> > > > > -- > Best Regards, Edward J. Yoon > @eddieyoon >