1

我正在运行一个简单的 wordcount 程序,但出现以下错误:

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

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

4

3 回答 3

4

您可以在 main 函数中使用以下任一行:

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

假设您使用的是 JobConf conf;

或者

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

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

于 2012-06-13T21:17:49.637 回答
0

您正在提供一个序列文件的输入,该文件LongWritable的键为 ,而预期的序列文件的键应为Text.

于 2012-06-13T21:18:06.057 回答
0

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

于 2012-06-13T21:53:12.607 回答