Mit HadoopTestCase bietet Hadoop eine einfache Möglichkeit den Hadoop Map/Reduce Prozess in einer Testumgebung auszuführen. Das Ergebnis des Prozesses zu prüfen ist indirekt über RunningJob möglich. RunningJob wird von JobClient.runJob(jobConf); zurück geliefert. Über RunningJob können die Counter der Reporter-Klasse abgefragt werden.
Mapper Beispiel:
public class SentencerMapper extends MapReduceBase
implements Mapper<LongWritable, Text, Text, Text> {
public void map(final LongWritable positionInFile,
final Text eosDoc,
final OutputCollector<Text, Text> outputCollector,
final Reporter reporter) throws IOException {
// do Something…
reporter.incrCounter(Index.MAP, 1);
}
}
Testcode:
public class CombiningSentencerReducerTest extends HadoopTestCase {
public void testSimpleJob() throws Exception {
// prepare test…
// and run…
final RunningJob job = JobClient.runJob(jobConf);
job.waitForCompletion();
final Counters counters = job.getCounters();
assertEquals(4, counters.getCounter(Index.MAP));
assertEquals(2, counters.getCounter(Index.REDUCE));
}
}
Geschrieben von sascha am 21. März 2008 22:40:45 CET
