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
> 

Reply via email to