[ https://issues.apache.org/jira/browse/HADOOP-1230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12616604#action_12616604 ]
Doug Cutting commented on HADOOP-1230: -------------------------------------- > interfaces lead to more testable designs Perhaps, but a well-designed abstract class should be just as testable. The bottom line is that, if we're serious about providing backwards-compatiblity to our users, and we expect our APIs to evolve, then we should not use interfaces for anything with more than a single method, simple method. > Replace parameters with context objects in Mapper, Reducer, Partitioner, > InputFormat, and OutputFormat classes > -------------------------------------------------------------------------------------------------------------- > > Key: HADOOP-1230 > URL: https://issues.apache.org/jira/browse/HADOOP-1230 > Project: Hadoop Core > Issue Type: Improvement > Components: mapred > Reporter: Owen O'Malley > Assignee: Owen O'Malley > Attachments: context-objs-2.patch, context-objs-3.patch, > context-objs.patch > > > This is a big change, but it will future-proof our API's. To maintain > backwards compatibility, I'd suggest that we move over to a new package name > (org.apache.hadoop.mapreduce) and deprecate the old interfaces and package. > Basically, it will replace: > package org.apache.hadoop.mapred; > public interface Mapper extends JobConfigurable, Closeable { > void map(WritableComparable key, Writable value, OutputCollector output, > Reporter reporter) throws IOException; > } > with: > package org.apache.hadoop.mapreduce; > public interface Mapper extends Closable { > void map(MapContext context) throws IOException; > } > where MapContext has the methods like getKey(), getValue(), collect(Key, > Value), progress(), etc. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.