입력,지도 출력 및 출력 감소에 AVRO를 사용하는 매퍼 & 감속기를 만들었습니다. MRUnit 테스트를 만들 때 나는 다음과 같은 스택 트레이스를 얻을 :MRUnit과 AVRO를 함께 사용하십시오.
(나는 아 브로 맵리 듀스 API 구현을 만든) 다음과 같이 드라이버가 초기화됩니다java.lang.NullPointerException
at org.apache.hadoop.io.serializer.SerializationFactory.getSerializer(SerializationFactory.java:73)
at org.apache.hadoop.mrunit.mock.MockOutputCollector.deepCopy(MockOutputCollector.java:74)
at org.apache.hadoop.mrunit.mock.MockOutputCollector.collect(MockOutputCollector.java:110)
at org.apache.hadoop.mrunit.mapreduce.mock.MockMapContextWrapper$MockMapContext.write(MockMapContextWrapper.java:119)
at org.apache.avro.mapreduce.AvroMapper.writePair(AvroMapper.java:22)
at com.bol.searchrank.phase.day.DayMapper.doMap(DayMapper.java:29)
at com.bol.searchrank.phase.day.DayMapper.doMap(DayMapper.java:1)
at org.apache.avro.mapreduce.AvroMapper.map(AvroMapper.java:16)
at org.apache.avro.mapreduce.AvroMapper.map(AvroMapper.java:1)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
at org.apache.hadoop.mrunit.mapreduce.MapDriver.run(MapDriver.java:200)
at org.apache.hadoop.mrunit.mapreduce.MapReduceDriver.run(MapReduceDriver.java:207)
at com.bol.searchrank.phase.day.DayMapReduceTest.shouldProduceAndCountTerms(DayMapReduceTest.java:39)
:
driver = new MapReduceDriver<AvroWrapper<Pair<Utf8, LiveTrackingLine>>, NullWritable, AvroKey<Utf8>, AvroValue<Product>, AvroWrapper<Pair<Utf8, Product>>, NullWritable>().withMapper(new DayMapper()).withReducer(new DayReducer());
이 io.serialization있는 구성 객체를 추가 도움이되지 않습니다 :
Configuration configuration = new Configuration();
configuration.setStrings("io.serializations", new String[] {
AvroSerialization.class.getName()
});
driver = new MapReduceDriver<AvroWrapper<Pair<Utf8, LiveTrackingLine>>, NullWritable, AvroKey<Utf8>, AvroValue<Product>, AvroWrapper<Pair<Utf8, Product>>, NullWritable>().withMapper(new DayMapper()).withReducer(new DayReducer()).withConfiguration(configuration);
을 나는 클라우 데라와 브로 MapRed 1.6.3에서 하둡 & MRUnit 0.20.2-cdh3u2를 사용합니다.
비교할 수 할 필요가 없게 K2 유형 매개 변수에 대한 제한을 완화? –
드라이버가 생성되기 전에 컨피규레이션이 생성됩니다. 또한 버전 번호도 추가되었습니다. – Salandur
여기에 누락 된 코드가 더 있습니다 - MapReduceDriver 생성자 라인에 대한 컴파일 오류가 발생했습니다 :'바인딩 불일치 : 유형 AvroKey이 MapReduceDriver 유형의 바운드 매개 변수 K2, V2, K3, V3>'이다. (MRUnit없이) 작동하는 직렬화 팩토리의 간단한 단위 테스트를 얻을 수 있습니다. –