Я пытаюсь протестировать свой MapReduce с помощью MRUnit, когда я выполняю интеграционный тест, он работает. У меня есть модульный тест, который я тоже хочу пройти.
Мой драйвер MRUnit и класс MapReduce:
MapDriver<ImmutableBytesWritable, Result, ImmutableBytesWritable, KeyValue>
public final class HashMapper extends
TableMapper<ImmutableBytesWritable, KeyValue>
Когда я определяю ввод, я получаю сообщение об ошибке:
mapDriver.withInput(new ImmutableBytesWritable(Bytes
.toBytes("query")), new Result(kvs1));
java.lang.NullPointerException
at org.apache.hadoop.mrunit.internal.io.Serialization.copy(Serialization.java:73)
at org.apache.hadoop.mrunit.internal.io.Serialization.copy(Serialization.java:91)
at org.apache.hadoop.mrunit.internal.output.MockOutputCollector.collect(MockOutputCollector.java:48)
at org.apache.hadoop.mrunit.internal.mapreduce.AbstractMockContextWrapper$4.answer(AbstractMockContextWrapper.java:90)
at org.mockito.internal.stubbing.StubbedInvocationMatcher.answer(StubbedInvocationMatcher.java:29)
at org.mockito.internal.MockHandler.handle(MockHandler.java:95)
at org.mockito.internal.creation.MethodInterceptorFilter.intercept(MethodInterceptorFilter.java:47)
Я предполагаю, что это потому, что ему не нравятся объекты Result и KeyValue, поскольку они не доступны для записи, но я не понимаю, почему тогда работают интеграционные тесты. Раньше он работал с Hbase 0.94, когда все эти объекты реализуют Writable, теперь я работаю с HBase 0.96. Любая подсказка, как я должен использовать MRUnit здесь?