有人能解释一下在hadoop的情况下配置的用途吗?
并向我解释以下代码:
// Create a new JobConf
JobConf job = new JobConf(new Configuration(), MyJob.class);
// Specify various job-specific parameters
job.setJobName("myjob");
FileInputFormat.setInputPaths(job, new Path("in"));
FileOutputFormat.setOutputPath(job, new Path("out"));
job.setMapperClass(MyJob.MyMapper.class);
job.setCombinerClass(MyJob.MyReducer.class);
job.setReducerClass(MyJob.MyReducer.class);
job.setInputFormat(SequenceFileInputFormat.class);
job.setOutputFormat(SequenceFileOutputFormat.class);
在hadoop的情况下,配置有什么用?
如果我正确理解您的要求,那么您可以配置一个作业,以便在运行MapReduce作业时知道要做什么。
您必须指定input&输出数据类型和位置,以及作为映射器和还原器的类。
例如,在这里,您将获取某个"in"
目录的内容,并将其写入"out"
目录。通常,这些是通过new Path(args[0])
和new Path(args[1])
从命令行获得的。
FileInputFormat.setInputPaths(job, new Path("in"));
FileOutputFormat.setOutputPath(job, new Path("out"));
在这里,您为MapReduceJob 设置了相应的类
job.setMapperClass(MyJob.MyMapper.class);
job.setCombinerClass(MyJob.MyReducer.class);
job.setReducerClass(MyJob.MyReducer.class);
在这里您可以指定输入和输出格式。这些必须分别对应于映射器和还原器的输入和输出。
job.setInputFormat(SequenceFileInputFormat.class);
job.setOutputFormat(SequenceFileOutputFormat.class);
作业也可以设置为可读的名称,这样您就可以在ResourceManager中跟踪它。
job.setJobName("myjob");