我正在编写 MapReduce 程序并使用 org.apache.hadoop.mapred.* 中的类。谁能告诉我这个错误的原因?我的 CustomInputFormat 类扩展了 InputFormat 并且我已经覆盖了 createRecordReader 方法。
我的 CustomInputFormat 的签名是:
class ParagraphInputFormat extends InputFormat {
@Override
public RecordReader createRecordReader(InputSplit arg0,
TaskAttemptContext arg1) throws IOException, InterruptedException {
return new CustomRecordReader();
}
@Override
public List<InputSplit> getSplits(JobContext arg0) throws IOException,
InterruptedException {
// TODO Auto-generated method stub
return null;
}
}
CustomRecordReader 的签名是 class CustomRecordReader extends RecordReader
在声明这个类时,我使用了 org.apache.hadoop.mapreduce。. 我对 org.apache.hadoop.mapred 感到困惑。和 org.apache.hadoop.mapreduce.*。Eclipse 有时会继续显示已弃用的消息。我听说 apache 添加了一些类,然后删除了这些类,然后又添加了以前的类。是不是因为这个?它会影响我的代码吗?
JobConf conf = new JobConf(new Configuration(),MyMRJob.class);
conf.setJobName("NameofJob");
conf.setOutputKeyClass(CutomeKeyClass.class); //no error to this line
conf.setOutputValueClass(IntWritable.class);
conf.setMapperClass(MYMap.class);
conf.setCombinerClass(MyReduce.class);
conf.setReducerClass(MyReduce.class);
conf.setInputFormat(CustomInputFormat.class);//ERROR to this line while typing
conf.setOutputFormat(IntWritable.class);
FileInputFormat.setInputPaths(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));
JobClient.runJob(conf);