我遇到了下面的MRUnit错误:
ERROR mrunit.TestDriver: 收到了意外的输出(60, mrdp.MyCustomClass@73207f36) ERROR mrunit.TestDriver:在位置0处缺少预期输出(60, mrdp.MyCustomClass@6f73cf45)
我创建了一个实现Writable接口、包含4个整数属性的MyCustomClass类。这是我的Mapper的输出值。
以下是Mapper的MRUnit测试代码:
ERROR mrunit.TestDriver: 收到了意外的输出(60, mrdp.MyCustomClass@73207f36) ERROR mrunit.TestDriver:在位置0处缺少预期输出(60, mrdp.MyCustomClass@6f73cf45)
我创建了一个实现Writable接口、包含4个整数属性的MyCustomClass类。这是我的Mapper的输出值。
以下是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();
}
当Mapper在上述的new Text("60,5596,1,256")
中定位到"1"时,它应该调用它的setter方法setAttr1(1)
。
我如何使用自定义类(带有多个属性)测试这个结果?作业执行成功,但我不知道如何使MRUnit测试正常工作。
$ hadoop fs -cat patterns/minmaxcount/outuserprefs/part*
23 mrdp.MyCustomClass@4cf15f6c
60 mrdp.MyCustomClass@4cf15f6c