Hadoop 2 (YARN). getting java.io.IOException: wrong key class. Exception -
i'm trying run hadoop 2 mapreduce process output_format_class sequencefileoutputformat , input_format_class sequencefileinputformat.
i chose mapper emits key , value both byteswritable. reducer emits key intwritable , value byteswritable.
every time i'm getting following error:
error: java.io.ioexception: wrong key class: org.apache.hadoop.io.byteswritable not class org.apache.hadoop.io.intwritable @ org.apache.hadoop.io.sequencefile$writer.append(sequencefile.java:1306) @ org.apache.hadoop.mapreduce.lib.output.sequencefileoutputformat$1.write(sequencefileoutputformat.java:83) @ org.apache.hadoop.mapred.reducetask$newtrackingrecordwriter.write(reducetask.java:558) @ org.apache.hadoop.mapreduce.task.taskinputoutputcontextimpl.write(taskinputoutputcontextimpl.java:89) @ org.apache.hadoop.mapreduce.lib.reduce.wrappedreducer$context.write(wrappedreducer.java:105) @ org.apache.hadoop.mapreduce.reducer.reduce(reducer.java:150) @ org.apache.hadoop.mapreduce.reducer.run(reducer.java:171) @ org.apache.hadoop.mapred.reducetask.runnewreducer(reducetask.java:627) @ org.apache.hadoop.mapred.reducetask.run(reducetask.java:389) @ org.apache.hadoop.mapred.yarnchild$2.run(yarnchild.java:163) @ java.security.accesscontroller.doprivileged(native method) @ javax.security.auth.subject.doas(subject.java:415) @ org.apache.hadoop.security.usergroupinformation.doas(usergroupinformation.java:1628) @ org.apache.hadoop.mapred.yarnchild.main(yarnchild.java:158) i discovered when define outputformat not sequencefileoutputformat problem solved need sequencefileoutputformat.
here main:
configuration conf = new configuration(true); conf.set("refpath", "/out/sample1/local/eu/cloudburst/binaryfiles/ref.br"); conf.set("qrypath", "/out/sample1/local/eu/cloudburst/binaryfiles/qry.br"); conf.set("min_read_len", integer.tostring(min_read_len)); conf.set("max_read_len", integer.tostring(max_read_len)); conf.set("k", integer.tostring(k)); conf.set("seed_len", integer.tostring(seed_len)); conf.set("flank_len", integer.tostring(flank_len)); conf.set("allow_differences", integer.tostring(allow_differences)); conf.set("block_size", integer.tostring(block_size)); conf.set("redundancy", integer.tostring(redundancy)); conf.set("filter_alignments", (filter_alignments ? "1" : "0")); job job = new job(conf,"cloudburst"); job.setnumreducetasks(num_reduce_tasks); // mv2 //conf.setnummaptasks(num_map_tasks); todo find solution mv2 fileinputformat.addinputpath(job, new path("/out/sample1/local/eu/cloudburst/binaryfiles/ref.br"));//todo change fit params fileinputformat.addinputpath(job, new path("/out/sample1/local/eu/cloudburst/binaryfiles/qry.br"));//todo change fit params job.setjarbyclass(merreduce.class);//mv2 job.setinputformatclass(sequencefileinputformat.class); job.setoutputformatclass(sequencefileoutputformat.class); // order of seeds not important, make sure reference seeds seen before qry seeds job.setpartitionerclass(merreduce.partitionmers.class); // mv2 job.setgroupingcomparatorclass(merreduce.groupmerswc.class); //mv2 todo job.setmapperclass(merreduce.mapclass.class); job.setreducerclass(merreduce.reduceclass.class); job.setmapoutputkeyclass(byteswritable.class);//mv2 job.setmapoutputvalueclass(byteswritable.class);//mv2 job.setoutputkeyclass(intwritable.class); job.setoutputvalueclass(byteswritable.class); path opath = new path("/out/sample1/local/eu/vectors");//todo change fit params //conf.setoutputpath(opath); fileoutputformat.setoutputpath(job, opath); system.err.println(" removing old results"); filesystem.get(conf).delete(opath); int code = job.waitforcompletion(true) ? 0 : 1; system.err.println("finished"); } the mapper class headline:
public static class mapclass extends mapper<intwritable, byteswritable, byteswritable, byteswritable> public void map(intwritable id, byteswritable rawrecord,context context) throws ioexception, interruptedexception the reducer class headline:
public static class reduceclass extends reducer (byteswritable, byteswritable, intwritable, byteswritable)
public synchronized void reduce(byteswritable mer, iterator<byteswritable> values,context context) throws ioexception, interruptedexception { anybody has idea?
job.setinputformatclass(sequencefileinputformat.class); should
job.setinputformatclass(intwritable.class);
you mapper input int , bytes, in job gave both inputs sequence
Comments
Post a Comment