Type mismatch in key from map: expected **, recieved org.apache.hadoop.io.LongWritable
出现这个错误的原因:
1、map和reduce中的输入输出格式不对。
比如
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
由于分布式系统读入文本时 每一行作为健 已每一行的整体作为value(一般为Text) 故 map参数Object key,Text value,
如果protected void map(Object key,Text value,Context context) 中的参数类型错误也会报同样的错误
2、新旧api混用。你的map()方法 没有按新api写, 结果系统不认为它是一个重载,而是一个新方法,不会被调用。
解决办法:在的map(), reduce()前面加上@Override,并按照新的API来写map(), reduce()。