我試圖用一些簡單的代碼使用Map reduce框架來咳嗽。以前我已經使用mapred包實現,並且能夠將輸入格式類指定爲KeyvalueTextInputFormat但是在使用mapreduce的新Api中,此類不存在。我嘗試使用TextInputFormat.class但我仍然得到以下異常Hadoop新API的類演員例外
- job_local_0001
java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.io.Text
at com.hp.hpl.mapReduceprocessing.MapReduceWrapper$HitFileProccesorMapper_internal.map(MapReduceWrapper.java:1)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:621)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
這裏是代碼的示例代碼段
Configuration conf = new Configuration();
conf.set("key.value.separator.output.line", ",");
Job job = new Job(conf, "Result Aggregation");
job.setJarByClass(ProcessInputFile.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);
job.setMapperClass(MultithreadedMapper.class);
MultithreadedMapper.setMapperClass(job, HitFileProccesorMapper_internal.class);
MultithreadedMapper.setNumberOfThreads(job, 3);
//job.setMapperClass(HitFileProccesorMapper_internal.class);
job.setReducerClass(HitFileReducer_internal.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
FileInputFormat.addInputPath(job, new Path(inputFileofhits.getName()));
FileOutputFormat.setOutputPath(job, new Path(ProcessInputFile.resultAggProps
.getProperty("OUTPUT_DIRECTORY")));
try {
job.waitForCompletion(true);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
請不要讓我知道什麼是做出這樣的配置更改該classcast異常可以避免。
嗨,Thaks的答覆..但我已經提到,我曾經使用過KeyValueTextInputFormat ..這個類不存在於我現在使用的新版本的hadoop ..我現在修改我的Mapper到Longwritable ..但我仍然好奇如何避免類拋出異常..在此先感謝 – 2012-07-19 16:36:16
你是什麼意思,你仍然好奇如何避免它?爲了避免這種情況,您需要確保映射器中的模板類型與輸入格式相匹配。 – 2012-07-19 20:03:39