hadoop - Haddop MRUnit MapDriver.addInput() giving NotSerializableException: java.nio.HeapByteBuffer error -


i using mrunit unit test our mapreducer below pom changes

<dependency>     <groupid>org.apache.mrunit</groupid>     <artifactid>mrunit</artifactid>     <version>1.1.0</version>     <classifier>hadoop1</classifier>     <scope>test</scope> </dependency> 

i not using avro.

i have added below lines rid of serialization issue

configuration conf = driver.getconfiguration(); conf.set("io.serializations", "org.apache.hadoop.io.serializer.javaserialization,"             + "org.apache.hadoop.io.serializer.writableserialization"); 

now, using below api add inputs

mapdriver.addinput(map<string, bytebuffer> key, map<string, bytebuffer> val)  

but when adding inputs above call, getting below error

java.lang.runtimeexception: java.io.notserializableexception: java.nio.heapbytebuffer @ org.apache.hadoop.mrunit.internal.io.serialization.copy(serialization.java:86) @ org.apache.hadoop.mrunit.internal.io.serialization.copy(serialization.java:97) @ org.apache.hadoop.mrunit.internal.io.serialization.copywithconf(serialization.java:110) @ org.apache.hadoop.mrunit.testdriver.copy(testdriver.java:675) @ org.apache.hadoop.mrunit.testdriver.copypair(testdriver.java:679) @ org.apache.hadoop.mrunit.mapdriverbase.addinput(mapdriverbase.java:120) @ com.pearson.psn.mapreduce.eventmappertest.testmapper(eventmappertest.java:102) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25) @ java.lang.reflect.method.invoke(method.java:597) @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:44) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:15) @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:41) @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:20) @ org.junit.internal.runners.statements.runbefores.evaluate(runbefores.java:28) @ org.junit.internal.runners.statements.runafters.evaluate(runafters.java:31) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:73) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:46) @ org.junit.runners.parentrunner.runchildren(parentrunner.java:180) @ org.junit.runners.parentrunner.access$000(parentrunner.java:41) @ org.junit.runners.parentrunner$1.evaluate(parentrunner.java:173) @ org.junit.internal.runners.statements.runbefores.evaluate(runbefores.java:28) @ org.junit.internal.runners.statements.runafters.evaluate(runafters.java:31) @ org.junit.runners.parentrunner.run(parentrunner.java:220) @ org.eclipse.jdt.internal.junit4.runner.junit4testreference.run(junit4testreference.java:50) @ org.eclipse.jdt.internal.junit.runner.testexecution.run(testexecution.java:38) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:459) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:675) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.run(remotetestrunner.java:382) @ org.eclipse.jdt.internal.junit.runner.remotetestrunner.main(remotetestrunner.java:192) caused by: java.io.notserializableexception: java.nio.heapbytebuffer @ java.io.objectoutputstream.writeobject0(objectoutputstream.java:1164) @ java.io.objectoutputstream.writeobject(objectoutputstream.java:330) @ java.util.hashmap.writeobject(hashmap.java:1001) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25) @ java.lang.reflect.method.invoke(method.java:597) @ java.io.objectstreamclass.invokewriteobject(objectstreamclass.java:940) @ java.io.objectoutputstream.writeserialdata(objectoutputstream.java:1469) @ java.io.objectoutputstream.writeordinaryobject(objectoutputstream.java:1400) @ java.io.objectoutputstream.writeobject0(objectoutputstream.java:1158) @ java.io.objectoutputstream.writeobject(objectoutputstream.java:330) @ org.apache.hadoop.io.serializer.javaserialization$javaserializationserializer.serialize(javaserialization.java:80) @ org.apache.hadoop.io.serializer.javaserialization$javaserializationserializer.serialize(javaserialization.java:65) @ org.apache.hadoop.mrunit.internal.io.serialization.copy(serialization.java:80) ... 30 more 

any idea missing here?

your problem caused trying serialise bytebuffers. not serialisable , need convert them arrays of bytes.


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

python - NameError: name 'subprocess' is not defined -