使用Mrunit对生成Hfile 的程序进行单元测试的时候发现提示 Serialization的
NullPointerException
跟踪代码后发现se 初始化后是null
提示信息:
java.lang.NullPointerException
at org.apache.hadoop.mrunit.Serialization.copy(Serialization.java:61)
at org.apache.hadoop.mrunit.Serialization.copy(Serialization.java:81)
原因无法初始化
serializer
try {
serializer = (Serializer<Object>) serializationFactory //这里为空
.getSerializer(clazz);
deserializer = (Deserializer<Object>) serializationFactory
.getDeserializer(clazz);
} catch (NullPointerException e) {
throw new IllegalStateException(
"No applicable class implementing Serialization in conf at io.serializations for "
+ orig.getClass(), e);
}
try {
final DataOutputBuffer outputBuffer = new DataOutputBuffer();
serializer.open(outputBuffer);
serializer.serialize(orig);
final DataInputBuffer inputBuffer = new DataInputBuffer();
inputBuffer.reset(outputBuffer.getData(), outputBuffer.getLength());
deserializer.open(inputBuffer);
return (T) deserializer.deserialize(copy);
} catch (final IOException e) {
throw new RuntimeException(e);
}
需要设置:
Configuration conf = mapDriver.getConfiguration();
conf.setStrings("io.serializations", conf.get("io.serializations"),
MutationSerialization.class.getName(),
ResultSerialization.class.getName(),
KeyValueSerialization.class.getName());
使用Mrunit对生成Hfile 的程序进行单元测试的时候发现提示 Serialization的
NullPointerException
跟踪代码后发现se 初始化后是null
提示信息:
java.lang.NullPointerException
at org.apache.hadoop.mrunit.Serialization.copy(Serialization.java:61)
at org.apache.hadoop.mrunit.Serialization.copy(Serialization.java:81)
原因无法初始化
serializer
try {
serializer = (Serializer<Object>) serializationFactory //这里为空
.getSerializer(clazz);
deserializer = (Deserializer<Object>) serializationFactory
.getDeserializer(clazz);
} catch (NullPointerException e) {
throw new IllegalStateException(
"No applicable class implementing Serialization in conf at io.serializations for "
+ orig.getClass(), e);
}
try {
final DataOutputBuffer outputBuffer = new DataOutputBuffer();
serializer.open(outputBuffer);
serializer.serialize(orig);
final DataInputBuffer inputBuffer = new DataInputBuffer();
inputBuffer.reset(outputBuffer.getData(), outputBuffer.getLength());
deserializer.open(inputBuffer);
return (T) deserializer.deserialize(copy);
} catch (final IOException e) {
throw new RuntimeException(e);
}
需要设置:
Configuration conf = mapDriver.getConfiguration();
conf.setStrings("io.serializations", conf.get("io.serializations"),
MutationSerialization.class.getName(),
ResultSerialization.class.getName(),
KeyValueSerialization.class.getName());