我创建了一个小例子来弄清楚如何使用MRUnit来测试MapReduce代码。我试图运行的例子是wordcount,所以我不会在这里粘贴代码,因为它对所有人都很熟悉。
我已经使用JUnit编写了测试。令我困惑的是,测试的成功取决于列出输出值的顺序。
例如,此测试通过:
mapDriver.withInput(new LongWritable(), new Text("Hadoop is cool"))
.withOutput(new Text("Hadoop"), new IntWritable(1))
.withOutput(new Text("is"), new IntWritable(1))
.withOutput(new Text("cool"), new IntWritable(1))
.runTest();
但这个不是
mapDriver.withInput(new LongWritable(), new Text("Hadoop is cool"))
.withOutput(new Text("Hadoop"), new IntWritable(1))
.withOutput(new Text("cool"), new IntWritable(1))
.withOutput(new Text("is"), new IntWritable(1))
.runTest();
这不是我期望的行为。
这是MRUnit中的错误,还是有这种行为的原因?