我正在尝试从IntelliJ内部运行Map-Reduce作业。这是我的跑步码,
public class ViewCount extends Configured implements Tool{
@Override
public int run(String[] args) throws Exception {
Configuration conf = this.getConf();
Job job = Job.getInstance(conf);
job.setJobName("viewCount");
job.setJarByClass(ViewCount.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapperClass(Map.class);
job.setReducerClass(Reduce.class);
Path inputFilePath = new Path(args[0]);
Path outputFilePath = new Path(args[1]);
FileInputFormat.addInputPath(job, inputFilePath);
FileOutputFormat.setOutputPath(job, outputFilePath);
return job.waitForCompletion(true) ? 0:1;
}
public static void main(String[] args) throws Exception {
int exitCode = ToolRunner.run(new ViewCount(), args);
System.exit(exitCode);
}
使用以下错误消息构建任务失败。
error: incompatible types: Job cannot be converted to JobConf
FileOutputFormat.setOutputPath(job, outputFilePath);
Apached文档表明该方法实际上需要一份工作而不是JobConf,所以我做错了什么?
答案 0 :(得分:0)
看看这些类来自哪些包。您可能正在混合包,您需要根据您的Hadoop版本使用正确包中的TextInputFormat。如果您使用的是Hadoop 2.x版,则需要导入不同的类(来自mapreduce包),与Hadoop版本1.x(具有mapred包)进行比较