You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@giraph.apache.org by "Nitay Joffe (JIRA)" <ji...@apache.org> on 2013/06/07 12:10:21 UTC

[jira] [Updated] (GIRAPH-684) Improve Writable API

     [ https://issues.apache.org/jira/browse/GIRAPH-684?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nitay Joffe updated GIRAPH-684:
-------------------------------

    Summary: Improve Writable API  (was: Improve Writables)
    
> 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