[ 
https://issues.apache.org/jira/browse/MAPREDUCE-1462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12830196#action_12830196
 ] 

Tom White commented on MAPREDUCE-1462:
--------------------------------------

Owen, thanks for posting your design. I've reproduced my comments on the design 
which I made on MAPREDUCE-1126 here for convenience:

* The changes to the serialization API are not backwards compatible, so a new 
package of serializer types would need creating. Is this really necessary to 
achieve Avro integration?
* I'm not sure why we need to serialize serializations. The patch in 
MAPREDUCE-1126 avoids the need for this by using a simple string mechanism for 
configuration. Having an opaque binary format also makes it difficult to 
retrieve and use the serialization from other languages (e.g. C++ or other 
Pipes languages). My latest patch on MAPREDUCE-1126 is language-neutral in this 
regard.
* Adding a side file for the context-serializer mapping complicates the 
implementation. It's not clear what container file would be used for the side 
file (Avro container, custom?). I understand that putting framework 
configuration in the job configuration may not be desirable, but it has been 
done in the past so I don't know why it is being ruled out here. I would rather 
have a separate effort (and discussion) to create a "private" job configuration 
(not accessible by user code) for such configuration (above and beyond the 
configuration needed for serialization).
* The user API is no shorter than the one proposed in MAPREDUCE-1126. Compare:
{code}
Schema keySchema = ...
AvroGenericSerialization serialization = new AvroGenericSerialization();
serialization.setSchema(keySchema);
job.set(SerializationContext.MAP_OUTPUT_KEY, serialization);
{code}
with
{code}
Schema keySchema = ...
AvroGenericData.setMapOutputKeySchema(job, keySchema);
{code}


> Enable context-specific and stateful serializers in MapReduce
> -------------------------------------------------------------
>
>                 Key: MAPREDUCE-1462
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-1462
>             Project: Hadoop Map/Reduce
>          Issue Type: New Feature
>          Components: task
>            Reporter: Owen O'Malley
>            Assignee: Owen O'Malley
>         Attachments: h-1462.patch
>
>
> Although the current serializer framework is powerful, within the context of 
> a job it is limited to picking a single serializer for a given class. 
> Additionally, Avro generic serialization can make use of additional 
> configuration/state such as the schema. (Most other serialization frameworks 
> including Writable, Jute/Record IO, Thrift, Avro Specific, and Protocol 
> Buffers only need the object's class name to deserialize the object.)
> With the goal of keeping the easy things easy and maintaining backwards 
> compatibility, we should be able to allow applications to use context 
> specific (eg. map output key) serializers in addition to the current type 
> based ones that handle the majority of the cases. Furthermore, we should be 
> able to support serializer specific configuration/metadata in a type safe 
> manor without cluttering up the base API with a lot of new methods that will 
> confuse new users.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to