使用Hadoop的MapReduce:键入地图中的键不匹配

时间:2012-06-13 21:14:17

标签: hadoop mapreduce

我正在运行一个简单的wordcount程序,我收到以下错误:

Type mismatch in key from map: expected org.apache.hadoop.io.Text, received org.apache.hadoop.io.LongWritable

这是什么意思,我该如何纠正?

3 个答案:

答案 0 :(得分:4)

您可以在主要功能中使用以下任一行:

 conf.setMapOutputKeyClass(Text.class);
 conf.setMapOutputValueClass(IntWritable.class);

假设您正在使用JobConf conf;

OR

    job.setMapOutputKeyClass(Text.class);
    job.setMapOutputValueClass(IntWritable.class);

假设您正在使用Job job = new Job();

答案 1 :(得分:0)

您输入的序列文件以LongWritable为键,而预期序列文件的密钥应为Text

答案 2 :(得分:0)

如果您在输入格式类时使用TextInputFormat,则可能会发生这种情况。它生成LongWritable类型的键和Text类型的值。但是,您的应用程序可能需要Text类型的键。这就是为什么当您将MapOutputKeyClass显式设置为由shailesh使用“job.setMapOutputKeyClass(Text.class)”表示它适用于你。