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()。

时间: 2024-09-06 06:25:49

MR IOException: Type mismatch in key from map的处理的相关文章

hadoop spark-在MR模型中,怎么根据处理数据的属性设置双key,甚至多key去map?

问题描述 在MR模型中,怎么根据处理数据的属性设置双key,甚至多key去map? 在MR模型中,怎么根据处理数据的属性设置双key,甚至多key去map? 解决方案 http://my.oschina.net/cloudcoder/blog/277267

jsfEL表达式能根据动态key获得map的value吗?

问题描述 jsfEL表达式能根据动态的key获得map的value吗?类似于这样:其中tmpl为二维数组,datatable对其循环map为Map<h:dataTablevar="row"value="#{bb.tmpl}"border="1"><h:column><gc:outputTextvalue="#{row[0]}"/></h:column><h:column&g

Type mismatch: cannot convert from Enumeration to Enumeration

完整错误信息: Description Resource Path Location TypeType mismatch: cannot convert from Enumeration<String> to Enumeration<Object> ResponseHeaderFilter.java /dwz-java/src/dwz/common/util line 46 Java Problem 解决办法:

date java.lang.IllegalArgumentException: argument type mismatch

项目使用 strut2 ,spring,hibernate,提交表单时报错 Java.lang.NoSuchMethodException: com.shop.jn.entity.Goods.setBuyDateTime([Ljava.lang.String;)] 异常详细信息: Xml代码   11:23:30,113  WARN  - Error setting expression 'goods.buyDateTime' with value '[Ljava.lang.String;@10

java.lang.IllegalArgumentException: argument type mismatch

问题描述 我建了一个添加新生的表单,属性中有一个时间.我用的是My97DatePicker控件.我的ACTION是以下publicclassAddStudentActionextendsAction{privateManagerDAOmanagerDAO=null;publicAddStudentAction(){this.managerDAO=newManagerDAO();}publicActionForwardexecute(ActionMappingmapping,ActionFormf

错误提示argument type mismatch

问题描述 <%@pagelanguage="java"pageEncoding="UTF-8"%><%@tagliburi="http://struts.apache.org/tags-bean"prefix="bean"%><%@tagliburi="http://struts.apache.org/tags-html"prefix="html"%>

代理程序本地执行或调试都没有问题,自动跑后总是报错“Type Mismatch”.CDAT函数使用时报错.

问题描述 代理程序本地执行或调试都没有问题,自动跑后总是报错"TypeMismatch".已经确定是CDAT函数使用问题.doc.GetItemValue("K_AgentTime")(0)的值为"2011/7/1902:30:02AM"代码如下,哪位高手帮忙看看.SubInitializeadmin="-----"REMdefineobjectDimsessionAsNewNotesSessionDimdbAsNotesDa

菜鸟请教Type mismatch father = new Son1(); 麽呗啊?

问题描述 Fatherfather;father=newSon1();其中Father是父类,Son1是其子类!上面的代码在运行时出现下面错误:Exceptioninthread"main"java.lang.Error:Unresolvedcompilationproblems:Typemismatch:cannotconvertfromSon1toFather该怎么改啊?我用的是Eclipse 解决方案 解决方案二:跟你用的啥开发工具无关,你的Son1这个类extendsFathe

argument type mismatch

问题描述 我建的ActionForm中用到了java.util.date,为什么页面里的值传不进去,报java.lang.IllegalArgumentException:Cannotinvokecom.dahecp.company.CompanyForm.setBeginTime-argumenttypemismatch错误.我在网上查说在页面上加enctype="multipart/form-data"就可以了,为什么我加了还传不进值啊?请高手帮忙解决一下了!我刚加进来还没可用分,