Mapreduce Error: Type mismatch in key from map

来源:互联网 发布:嵌入式linux面试题 编辑:程序博客网 时间:2024/05/01 20:16

关于Mapreduce中出现的错误:Type mismatch in key from map: expected **, recieved org.apache.hadoop.io.LongWritable

例如:

13/07/22 02:53:32 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
13/07/22 02:53:32 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
13/07/22 02:53:32 WARN mapred.JobClient: No job jar file set.  User classes may not be found. See JobConf(Class) or JobConf#setJar(String).
13/07/22 02:53:32 INFO input.FileInputFormat: Total input paths to process : 1
13/07/22 02:53:38 INFO mapred.JobClient: Running job: job_local_0001
13/07/22 02:53:38 INFO input.FileInputFormat: Total input paths to process : 1
13/07/22 02:53:38 INFO mapred.MapTask: io.sort.mb = 100
13/07/22 02:53:39 INFO mapred.JobClient:  map 0% reduce 0%
13/07/22 02:53:39 INFO mapred.MapTask: data buffer = 79691776/99614720
13/07/22 02:53:39 INFO mapred.MapTask: record buffer = 262144/327680
13/07/22 02:53:39 WARN mapred.LocalJobRunner: job_local_0001
java.io.IOException: Type mismatch in key from map: expected CoOccurrence$TextPair, recieved org.apache.hadoop.io.LongWritable
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:845)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.write(MapTask.java:541)
at org.apache.hadoop.mapreduce.TaskInputOutputContext.write(TaskInputOutputContext.java:80)
at org.apache.hadoop.mapreduce.Mapper.map(Mapper.java:124)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:621)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
13/07/22 02:53:40 INFO mapred.JobClient: Job complete: job_local_0001
13/07/22 02:53:40 INFO mapred.JobClient: Counters: 0
出现这个错误的原因:

1、map和reduce中的输入输出格式不对。

2、新旧api混用。你的map()方法 没有按新api写, 结果系统不认为它是一个重载,而是一个新方法,不会被调用。

解决办法:在的map(), reduce()前面加上@Override,并按照新的API来写map(), reduce()


原创粉丝点击