Patrick Hunt created MRUNIT-166:
-----------------------------------

             Summary: mapreduce reducers are passed mapred taskattemptid/taskid 
class instances
                 Key: MRUNIT-166
                 URL: https://issues.apache.org/jira/browse/MRUNIT-166
             Project: MRUnit
          Issue Type: Bug
    Affects Versions: 1.0.0
            Reporter: Patrick Hunt


I have a mapreduce API based reducer. When my test runs the setup method is 
called with a mapred taskattemptid/taskid. You can see it in the following. I'm 
printing the classes of the passed context, taskattemptid, taskid. You can see 
that my reducer is getting called through mapreduce.Reduce.run().

{noformat}
PDH setup context:class 
org.apache.hadoop.mapreduce.Reducer$Context$$EnhancerByMockitoWithCGLIB$$fc977043
PDH setup taskattemptid:class org.apache.hadoop.mapred.TaskAttemptID
PDH setup taskid:class org.apache.hadoop.mapred.TaskID
PDH setup stack:
        at foo.FooReducerTest$MyFooReducer.setup(FooReducerTest.java:75)
        at org.apache.hadoop.mapreduce.Reducer.run(Reducer.java:162)
        at 
org.apache.hadoop.mrunit.mapreduce.ReduceDriver.run(ReduceDriver.java:139)
        at foo.FooReducerTest.testReducer(FooReducerTest.java:120)
{noformat}

this causes my tests to fail due to later invocations of the test are also 
exercising a subclass of FileOutputFormat, specifically the method

org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.getRecordWriter(TaskAttemptContext)

getRecordWriter is called with a context that provides mapreduce based 
taskattemptid/taskid.

The code is comparing the taskid of setup to getRecordWriter, which fails due 
to the classes being different (even though the data, taskid, itself is the 
same)


--
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: http://www.atlassian.com/software/jira

Reply via email to