我正在运行一个简单的wordcount程序,我收到以下错误:
Type mismatch in key from map: expected org.apache.hadoop.io.Text, received org.apache.hadoop.io.LongWritable
这是什么意思,我该如何纠正?
答案 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)”表示它适用于你。