java.io.IOException:Typemismatch in key from map:expected org.apache.hadoop.io

1774 단어 exception

해결 방법:


            job.setMapOutputKeyClass(IntWritable.class);


            job.setMapOutputValueClass(Text.class);


            job.setOutputKeyClass(Text.class);


            job.setOutputValueClass(IntWritable.class);


 
 if (key.getClass() != keyClass) {        thrownew IOException("Type mismatch in key from map: expected "                             + keyClass.getName() + ", recieved "                             + key.getClass().getName());      }      if(value.getClass() != valClass) {        thrownew IOException("Type mismatch in value from map: expected "                             + valClass.getName() + ", recieved "                             + value.getClass().getName());      }

MapOutputBuffer에서collet () 은 MapOutputBuffer에서 지정한 KeyClass와 ValueClass를 초기화하는 것과 같은 실제 키 값 유형을 검사합니다.


keyClass= (Class<K>)job.getMapOutputKeyClass();


valClass =(Class<V>)job.getMapOutputValueClass();


 
public Class<?> getOutputKeyClass() {    return getClass("mapred.output.key.class",                    LongWritable.class, Object.class);   LongWritable  }
public Class<?> getOutputKeyClass() {    return getClass("mapred.output.key.class",                    LongWritable.class, Object.class);   LongWritable  }

상술한 것은 프로그램에서 직접 수정하고, 명령줄에서 키와value를 지정하는 형식도 있습니다.

-D  mapred.mapoutput.key.class=org.apache.hadoop.io.LongWritable -jobconf mapred.mapoutput.key.class=org.apache.hadoop.io.LongWritable

좋은 웹페이지 즐겨찾기