您现在的位置是:首页 > 文章详情

MR IOException: Type mismatch in key from map的处理

日期:2016-05-12点击:535

一、错误描述

    执行MR出现如下错误,如执行命令是:

hadoop jar /opt/cloudera/parcels/CDH-5.0.1-1.cdh5.0.1.p0.47/lib/hadoop-mapreduce/hadoop-streaming-2.3.0-cdh5.0.1.jar -input /test2 -output /test12 -mapper org.apache.hadoop.mapred.lib.TokenCountMapper -reducer org.apache.hadoop.mapred.lib.LongSumReducer -jobconf mapred.job.name='java mr' -numReduceTasks 1

    错误如下:

14/06/09 15:09:50 INFO mapreduce.Job: Task Id : attempt_1401948435703_0028_m_000000_0, Status : FAILED
Error: java.io.IOException: Type mismatch in key from map: expected org.apache.hadoop.io.LongWritable, received org.apache.hadoop.io.Text
        at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:1049)
        at org.apache.hadoop.mapred.MapTask$OldOutputCollector.collect(MapTask.java:587)
        at org.apache.hadoop.mapred.lib.TokenCountMapper.map(TokenCountMapper.java:54)
        at org.apache.hadoop.mapred.lib.TokenCountMapper.map(TokenCountMapper.java:38)
        at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
        at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:430)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)

二、原因及解决方案

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

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

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

原文链接:https://yq.aliyun.com/articles/43491
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章