gpt4 book ai didi

java - 为什么我的输出文件名为 'part-r-xxxxx' ,即使我没有提到任何 reducer 类?

转载 作者:可可西里 更新时间:2023-11-01 15:13:00 26 4
gpt4 key购买 nike

我正在使用 Hadoop 2.6.0 的 Apache 发行版。我知道映射器的输出文件以每个映射器的“part-m-xxxxx”格式命名,而 reducer 的输出文件为每个 reducer 命名为“part-r-xxxxx”。我正在试验一个简单的 Max-Temperature 用例,并且我没有在我的作业配置中设置任何 reducer 类。既然如此,输出文件不应该命名为“part-m-xxxxx”吗?请在下面找到我的主要类(class):

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);

在这种情况下,reducer 不会运行,程序的输出将命名为 part-m-xxxxx。输出将不会排序。

关于java - 为什么我的输出文件名为 'part-r-xxxxx' ,即使我没有提到任何 reducer 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com