我收到以下 MRUnit 错误:
错误 mrunit.TestDriver:收到意外输出 (60, mrdp.MyCustomClass@73207f36)
错误 mrunit.TestDriver:在位置 0 处缺少预期输出(60,mrdp.MyCustomClass@6f73cf45)
我创建了一个MyCustomClass
which implements Writable
,并且有 4 个 int 属性。这是我的映射器的输出值。
以下是mapper的MRUnit测试代码:
@Test
public void testMapper() throws IOException {
MyCustomClass result = new MyCustomClass();
result.setAttr1(1);
result.setAttr2(0);
result.setAttr3(0);
result.setAttr4(0);
mapDriver.withInput(new LongWritable(1), new Text("60,5596,1,256"));
mapDriver.addOutput(new Text("60"), result);
mapDriver.runTest();
}
setAttr1(1)
当在上面找到“1”时,我的 Mapper 应该调用它的 setter new Text("60,5596,1,256")
。
如何使用自定义类(具有多个属性)测试此结果?作业执行成功,我只是不知道如何使 MRUnit 测试工作。
$ hadoop fs -cat patterns/minmaxcount/outuserprefs/part*
23 mrdp.MyCustomClass@4cf15f6c
60 mrdp.MyCustomClass@4cf15f6c