当前位置: 首页 > 知识库问答 >
问题:

将reducers设置为默认,但最后我有两个文件

容修贤
2023-03-14

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

零件-R-00000

而且

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

}

共有1个答案

徐知
2023-03-14

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

然而,可能出了问题的事情包括(但不限于):

>

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

    确保您没有从命令行指定不同数量的还原器(例如,通过使用a-d属性)。

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

    群集中的节点数是不相关的。

  •  类似资料:
    • 问题内容: 我想在this的文本框中设置默认文件名。我可以设置吗? 问题答案: 使用以下代码: 您必须指定完整路径

    • 在安装了以管理中的冲突后,仍然会为我打开默认设置: 以下是本回答中提到的配置: 注意:我可以用简单的文件单独运行,但是我不能在我的git项目中运行它。任何想法? 编辑:这里是我的. gitconfig:

    • 问题内容: 我要在这里做的是 使python3成为默认的python。 除了在Mac上自动安装的python 2.7之外,我还使用 homebrew 安装了 python3 。这是我关注的网站。http://docs.python-guide.org/zh- CN/latest/starting/install3/osx/#install3-osx 我想我很好地遵循了每条指令,重新安装了xcode

    • 我尝试使用liquibase使用liquibase“addDefaultValue”语法将我的列的默认值设置为null: 但是向myTable插入新行显示默认值仍然设置为“false”,就像以前一样。所以liquibase更改集不起作用。 如何设置列默认值为null与liquibase?

    • Apache Kafka文档说明: 内部Kafka Streams使用者max.poll.interval.ms默认值已从300000更改为integer.max_value

    • 但是它确实有边距,我怎么得到这个默认的边距值呢?