MR IOException: Type mismatch in key from map的处理
一、错误描述
执行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()。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Hadoop: Why Not Use RAID?
一、针对hadoop集群的磁盘配置建议 针对datanode,建议采用一组单独的磁盘,针对namenode节点,建议采用raid5或raid1来实现针对metadata的冗灾。 二、针对此问题讨论的资料 针对此问题,两篇文章从不同角度论证为什么Hadoop更青睐JBOD而不是RAID-0。分别是: Steve Loughran所撰写的《Why not RAID-0? It’s about Time and Snowflakes》, 对Greg Bruno博士(工程副总裁及StackIQ联合创始人)的一个采访《Proper Care and Feeding of Drives in a Hadoop Cluster: A Conversation with StackIQ’s Dr. Bruno》 Raid0的资料: 将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。RAID 0亦称为带区集。它是将多个磁盘并列起来,成为一个大磁盘。在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中,所以在所有的级别中,RAID 0的速度是最快的。但是RAID ...
- 下一篇
HTTPFS: 基于HTTP操作hadoop hdfs文件系统
一、HTTPFS简介 1:httpfs是cloudera公司提供的一个hadoop hdfs的一个http接口,通过WebHDFS REST API 可以对hdfs进行读写等访问 2:与WebHDFS的区别是不需要客户端可以访问hadoop集群的每一个节点,通过httpfs可以访问放置在防火墙后面的hadoop集群 3:httpfs是一个Web应用,部署在内嵌的tomcat中 用这种方式在数据共享给其他系统时,网络安全上更容易实现,使用请参考: http://archive.cloudera.com/cdh4/cdh/4/hadoop/hadoop-project-dist/hadoop-hdfs/WebHDFS.html 二、启动服务(针对使用cloudera manager安装了CDH4或CDH5) 在cm控制台,打开hdfs实例页面,添加httpfs服务,然后启动即可。 三、安装可参考(手工安装) http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/latest/CDH4-Install...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker快速安装Oracle11G,搭建oracle11g学习环境