Yes, basically I agree with you. User should handle it. BTW, at the
same time, I don't want to remove AbsDiffAggregator.

Do you have any good idea?

On Thu, Jan 23, 2014 at 7:38 PM, Anastasis Andronidis
<andronat_...@hotmail.com> wrote:
> 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
>>
>



-- 
Best Regards, Edward J. Yoon
@eddieyoon

Reply via email to