giraph-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nitay Joffe (JIRA)" <>
Subject [jira] [Updated] (GIRAPH-684) Improve Writable API
Date Fri, 07 Jun 2013 10:10:21 GMT


Nitay Joffe updated GIRAPH-684:

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

View raw message