MRUnit driver classes should provide ability to set a configuration object to
be passed into the mapper/reducer
---------------------------------------------------------------------------------------------------------------
Key: MAPREDUCE-2002
URL: https://issues.apache.org/jira/browse/MAPREDUCE-2002
Project: Hadoop Map/Reduce
Issue Type: Bug
Components: contrib/mrunit
Affects Versions: 0.20.2
Reporter: David Rosenstrauch
Priority: Minor
Short description:
Enhance the org.apache.hadoop.mrunit.mapreduce.MapDriver, ReduceDriver, and
MapReduceDriver unit test driver classes to contain "setConfiguration" and
"withConfiguration" methods for passing in user-supplied
org.apache.hadoop.conf.Configuration objects, and have those configuration
objects eventually get passed on to the Context objects that are passed in to
the mapper/reducer "setup" methods. (Rather than passing in an empty
Configuration object, as is being done now.)
Long description:
The MRUnit driver classes (i.e., MapDriver, ReduceDriver, and MapReduceDriver)
ought to be enhanced to contain methods for setting a Configuration object to
be used by the mapper/reducer being tested - i.e., setConfiguration() and
withConfiguration().
The only way to effectively pass parameters into a mapper or reducer is by
setting properties on a configuration object, which the mapper/reducer can then
retrieve in their "setup" step, and use to customize its operation. As a
result, specific mappers/reducers may require the presence of specific
configuration properties/parameters in order to function correctly (or at all).
(I am currently coding such a reducer right now.)
Testing such a mapper/reducer thus requires that the unit testing framework
used provide the ability to pass in user-supplied Configuration objects to them
so that they can be tested with appropriate parameter values. However, MRUnit
currently does not provide this ability. (All mappers/reducers are always
passed an empty configuration object.) And there is not even currently any
(easy) way for the end-user to fix this problem by creating a simple sub-class
that supplies this functionality, as such subclasses would require a
substantial reimplementation/override of several MRUnit framework classes.
I believe this something that is not too difficult to fix in the MRUnit
framework code, however, and would greatly help the usability of MRUnit.
Although I don't have time to code this enhancement right now, if
needed/preferred I could squeeze out some time to code up a patch for this. If
that's needed, please let me know.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.