giraph-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Armando Miraglia (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (GIRAPH-684) Improve Writable API
Date Fri, 07 Jun 2013 12:14:20 GMT

    [ https://issues.apache.org/jira/browse/GIRAPH-684?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13677980#comment-13677980
] 

Armando Miraglia commented on GIRAPH-684:
-----------------------------------------

I find this quite an interesting point. I am running in some problems related to this since
I am working on an algorithm implementation.
                
> Improve Writable API
> --------------------
>
>                 Key: GIRAPH-684
>                 URL: https://issues.apache.org/jira/browse/GIRAPH-684
>             Project: Giraph
>          Issue Type: Bug
>            Reporter: Nitay Joffe
>            Assignee: Nitay Joffe
>
> While working on GIRAPH-683 I realized something: The python code the user has to write
is fairly cumbersome, because they cant just say setValue(4), they have to say setValue(IntWritable(4)).
This is incredibly ugly in my opinion.
> The problem is that we have a tight coupling between user types and their serialization,
so the "everything must be Writable" spreads throughout the codebase.
> I think we need to change e.g. Vertex<I extends WritableComparable, V extends Writable,
E extends Writable> to just Vertex<I extends Comparable, V, E>.
> We keep a Map<Class, Serializer> that tells us how to serialize classes. This map
can be initialized with things we know how to serialize, e.g. Long, Double, and String.
> So then the I,V,E,M parameters, in order to get serialized, would need to adhere to one
of the following:
> 1) Be a type we know how to serialize, e.g. Long.
> 2) Be Writable. The key is we don't _require_ it on the generic parameter, but we check
if it is and if so we use their code. This makes everything backwards compatible.
> 3) The user has registered his own serializer. This lets them serialize completely new
types, for example a fastutil map, without having to subclass that type to make it Writable.
> With this improved API in place, all computation code (and user code in general) would
be much cleaner and simpler. It will also make things like Jython much more intuitive.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message