MapReduce コードをテストするために MRUnit を使用する方法を理解するために、小さな例を作成しました。私が実行しようとしている例は 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 のバグですか、それともそのような動作には理由がありますか?