Type mismatch 问题
2012-08-23 20:43
218 查看
今天在写MapReduce程序时遇到了Type mismatch的问题,真的非常蛋疼,折腾了好久,后来找到了问题所在。
即setOutputKeyClass() 会同时限定Mapper和Reducer的输出 key 类型,同理,setOutputValueClass()会同时限定Mapper和Reducer的输出value类型。如果Mapper和Reducer的输出key或value类型不同,可以通过setMapOutputKeyClass 和 setMapOutputValueClass来设定Mapper的输出key/value对。
举个例子,我写的Mapper类如下:
而Reducer类如下:
这时红色部分表明了FetchMapper的输出<k2,v2> 是 <Text,LongWritable> ,而 FetchReducer的输出为<k3,v3>是 <Text,Text>。可见v2 和 v3 是不同的。此时如果用下面的设置启动程序的话就会出现Type mismatched 错误:
而加上红色部分的代码则可以解决这个问题。
即setOutputKeyClass() 会同时限定Mapper和Reducer的输出 key 类型,同理,setOutputValueClass()会同时限定Mapper和Reducer的输出value类型。如果Mapper和Reducer的输出key或value类型不同,可以通过setMapOutputKeyClass 和 setMapOutputValueClass来设定Mapper的输出key/value对。
举个例子,我写的Mapper类如下:
static class FetchMapper extends Mapper<LongWritable, Text, Text, LongWritable>{ }
而Reducer类如下:
tatic class FetchReducer extends Reducer<Text, LongWritable, Text, Text> { }
这时红色部分表明了FetchMapper的输出<k2,v2> 是 <Text,LongWritable> ,而 FetchReducer的输出为<k3,v3>是 <Text,Text>。可见v2 和 v3 是不同的。此时如果用下面的设置启动程序的话就会出现Type mismatched 错误:
job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class);
而加上红色部分的代码则可以解决这个问题。
job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); job.setMapOutputValueClass(LongWritable.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class);
相关文章推荐
- 上传文件时碰到argument type mismatch的问题
- 问题及原因:IllegalArgumentException:argument type mismatch
- hadoop问题Type mismatch in value from map解决方法
- 关于Autowiring Class Issue (argument type mismatch)的问题的解决方法
- 问题: Type mismatch in key from map: expected org.apache.hadoop.io.Text, recieved org.apache.hadoop.io.LongWritable 解决方案
- 关于Autowiring Class Issue (argument type mismatch)的问题的解决方法
- Boost问题:/type_with_alignment.hpp:209: Parenthesis/brace mismatch between #if and #else branches;
- 解决Java“type mismatch cannot convert from byte[] to string”问题
- Struts常见问题5:java.lang.IllegalArgumentException: argument type mismatch
- Ubuntu13.10下编译ffmpeg遇到的问题libavcodec/x86/h264_qpel_mmx.c:1294: Error: operand type mismatch for `cmp'
- Struts常见问题5:java.lang.IllegalArgumentException: argument type mismatch
- 如何在Access中参数化日期类型,以解决Data type mismatch in criteria expression的问题
- 如何在Access中参数化日期类型,以解决Data type mismatch in criteria expression的问题
- hadoop问题Type mismatch in value from map解决方法
- Hadoop on Mac with IntelliJ IDEA - 9 解决Type mismatch in value from map问题
- hadoop下 Type mismatch in value from map的问题
- Type mismatch: cannot convert from java.sql.Connection to com.sun.。。。问题的解决
- hadoop问题Type mismatch in value from map解决方法
- struts中post方式上传文件,enctype="multipart/form-data",request.getParameter("file") 是null的问题分析
- Type mismatch: cannot convert from Object to String