我正在使用Hadoop 2.6.0的Apache发行版。我知道,对于每个映射器,映射器的输出文件都以“ part-m-xxxxx”格式命名,而对于每个简化器,简化器的输出文件都被命名为“ part-r-xxxxx”。我正在尝试一个简单的Max-Temperature用例,但尚未在Job配置中设置任何reducer类。在这种情况下,输出文件不应该被命名为“ part-m-xxxxx”吗?请在下面找到我的主班:
public class MaxTemperature{
public static void main(String[] args) throws Exception
{
Configuration conf = new Configuration();
Job job = new Job(conf, "Max Temperture");
job.setJarByClass(MaxTemperature.class);
int noOfInputPaths = args.length-1;
for (int i=0; i<noOfInputPaths; i++){
System.out.println("Adding Input path: "+args[i]);
FileInputFormat.addInputPath(job, new Path(args[i]));
}
System.out.println("Output path: "+args[args.length - 1]);
FileOutputFormat.setOutputPath(job, new Path(args[args.length - 1]));
job.setMapperClass(MaxTemperatureMapper.class);
//job.setReducerClass(MaxTemperatureReducer.class);
//job.setNumReduceTasks(3);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
System.exit(job.waitForCompletion(true)? 0 : 1);
}
}
如果MapReduce程序员未使用job.setReducerClass设置Reducer类,则将其IdentityReducer.class
用作默认值。如果您只想对输入进行排序。例如,身份缩减器可用于实现令人尴尬的并行算法,其中您仅使用映射器执行并行任务,但希望对输出键值对进行排序。输出将是part-r-xxxxx。
如果您设置
job.setNumReduceTasks(0);
在这种情况下,减速器将不会运行,程序的输出将命名为part-m-xxxxx。输出将不排序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句