giraph-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Avery Ching <>
Subject Re: Should it be possible to extend BasicVertex<I,V,E,M>?
Date Fri, 25 May 2012 17:58:55 GMT
Yeah, here-in lies the problem Paolo.  We want developers to be able to 
extend MutableVertex.  At the same time, we don't want users to be able 
to call putMessages() and releaseResources() - i.e. shoot themselves in 
the foot.

If you have an thoughts on how to handle this, that would be great.


On 5/25/12 10:52 AM, Paolo Castagna wrote:
> Hi Avery,
> thanks for your reply.
> However, if you expect end users to extend MutableVertex, it should not have
> package private methods inherited from BasicVertex and not implemented in
> MutableVertex.
> Such as:
>    abstract void putMessages(Iterable<M>  messages);
>    abstract void releaseResources();
> I wanted to try to extend MutableVertex because I wanted to see what it would
> take to use indexes (with memory mapped files) instead of keeping everything in
> RAM. I've not done much progress on that, but I needed to put my stuff in
> org.apache.giraph.graph.* because of the two methods above.
> Please, correct me if I am wrong.
> Cheers,
> Paolo
> Avery Ching wrote:
>> Sorry for the delayed response, but feel free to extend MutableVertex if
>> the other Vertex implementations don't meet your needs.  EdgeListVertex
>> is probably the most commonly used simple case, but something like
>> IntIntNullIntVertex is very optimized for certain primitives (not
>> general purposed).  Still, it can be nice to same more memory...
>> Avery
>> On 5/21/12 10:08 AM, Paolo Castagna wrote:
>>> Benjamin Heitmann wrote:
>>>> On 21 May 2012, at 17:15, Paolo Castagna wrote:
>>>>> A more direct question would be: are Giraph supposed to extend
>>>>> BasicVertex<I,V,E,M>   when they do not find a subclass of
>>>>> BasicVertex which meets
>>>>> their needs?
>>>> No, they are not. However this is not explicitly documented anywhere.
>>>> Or to say it more clearly: If you look in the javadoc of BasicVertex
>>>> and if you search the mailing lists,
>>>> then you will find that users are discouraged from using/extending
>>>> BasicVertex, but you will not find any suggestion of which
>>>> Vertex to extend instead. I even asked basically the same question
>>>> once, and got very indirect answers.
>>>> But that is okay, I figured it out by trial and error ;)
>>>> Users are supposed to extend HashMapVertex or EdgeListVertex (both in
>>>> org.apache.giraph.graph).
>>> Hi Benjamin,
>>> right, I should have seen those (this is a good sign I should stop for
>>> today
>>> and continue tomorrow morning). I didn't because I was thinking: "I do
>>> not need
>>> my vertexes to be mutable" (since, computing PageRank does not need to
>>> change
>>> the topology of a graph), so I was not focusing my attention on the
>>> MutableVertex hierarchy of classes (my mistake).
>>> Now my question would be: why SimplePageRankVertex extends
>>> LongDoubleFloatDoubleVertex? (But, I'll look at this tomorrow).
>>>> If you try to extend them, you will see that you can basically
>>>> plug-in any kind of existing class in the<I,V,E,M>   signature,
>>>> as long as the implement the right interfaces, which are all Writable
>>>> (and WritableComparable for I).
>>>> Then you just need to add your compute() method, and you are ready to
>>>> go.
>>>> Both HashMapVertex and EdgeListVertex provide implementations of all
>>>> the housekeeping that giraph needs.
>>>> Trying to work directly by extending BasicVertex will not work, as a
>>>> lot of methods are only accessibly on the same package level.
>>> Yep.
>>>> It would probably be a good idea to submit a small javadoc patch
>>>> which adds documentation to BasicVertex, that users need to look at
>>>> those other two classes.
>>> Yep.
>>> Thanks again for your help and for pointing me in the right direction.
>>> Paolo

View raw message