gpt4 book ai didi

hadoop - 将 reducer 设置为默认值,但最后我有两个文件

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

我正在运行一个 map reduce 作业,其中 reducer 的数量设置为默认值(一个 reducer)。理论上,每个 reducer 的输出必须是一个文件,但是当我运行我的工作时,我有两个文件

部分-r-00000

部分-r-00001

为什么会这样?

我的集群中只有一个节点。

我的驱动类:

public class DriverDate extends Configured implements Tool {    @Override    public int run(String[] args) throws Exception {        if (args.length != 2) {            System.out.printf("Usage: AvgWordLength inputDir outputDir\n");            System.exit(-1);        }            Job job = new Job(getConf());            job.setJobName("Job transformacio dates");            job.setJarByClass(DriverDate.class);            job.setMapperClass(MapDate.class);            job.setReducerClass(ReduceDate.class);            job.setMapOutputKeyClass(Text.class);            job.setMapOutputValueClass(NullWritable.class);            job.setOutputKeyClass(Text.class);            job.setOutputValueClass(NullWritable.class);            FileInputFormat.setInputPaths(job, new Path(args[0]));            FileOutputFormat.setOutputPath(job, new Path(args[1]));            job.waitForCompletion(true);        return 0;    }    public static void main(String[] args) throws Exception{        Configuration conf = new Configuration();        ToolRunner.run(conf,new DriverDate(), args);    }}

最佳答案

这段代码应该生成一个输出文件是正确的,因为 reduce 任务的默认数量是 1,并且每个 reducer 生成一个输出文件。

但是,可能出错的地方包括(但不限于):

  • 确保运行正确的 jar,并确保在生成 jar 时更新正确的 jar。确保将正确的 jar 从生成它的计算机复制到(单节点)集群的主服务器。例如,在您的说明中,您说用法:AvgWordLength inputDir outputDir,但是这个 jar 的名字不太可能是 AvgWordLength...

  • 确保您没有从命令行指定不同数量的 reducer(例如,通过使用 -D 属性)。

除此之外,我找不到任何其他可能的原因......

集群中的节点数量无关紧要。

关于hadoop - 将 reducer 设置为默认值,但最后我有两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31513510/

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