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

Tom White commented on MAPREDUCE-1478:
--------------------------------------

Thanks for taking a look Scott. Using includes/excludes was my first approach, 
but the compiler pulls in the transitive closure of the classes, which means 
that you get duplicates between the two jars.

> Duplication of wrappers and reflective access are usually signs that there is 
> a better way, but that better way almost always requires an API break.

I'm open to suggestions for a better way. We could remove the reflective access 
by, e.g., defining a part of the library that is core and stays in the core 
jar. The wrapper duplication arose because we put them in lib, but use them 
from core. I'm not sure how much a problem the duplication is in practice as 
it's all boilerplate delegation code.

> Separate the mapred.lib and mapreduce.lib classes to a different jar and 
> include the user jar ahead of the lib jar.
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: MAPREDUCE-1478
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-1478
>             Project: Hadoop Map/Reduce
>          Issue Type: Improvement
>          Components: task
>            Reporter: Owen O'Malley
>         Attachments: MAPREDUCE-1478.patch, move.sh
>
>
> Currently the user can't include updated library jars as part of their job. 
> By pulling out the lib classes we can include the classes (eg. 
> TextInputFormat) in the user's jar and get their version and not the system 
> installed one.

-- 
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