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

将mapreduce的输出合并到另一个目录结构中

舒仲渊
2023-03-14

我的MapReduce作业当前使用MultipleOutputs(如本文所述)以以下结构生成输出:

2013
    01
    02
    ..

2012
    01
    02
    ..

输出的基本路径是/dev/project/job1/output但是,另一个作业(job2)生成类似的数据,我希望这个作业(job1)的输出与另一个作业(job2)的输出合并。

我试图将生成的输出合并到一个公共输出目录(/dev/project/combinedoutput)中,该目录包含上述结构和两个作业的组合输出。是否有一种方法可以在作业本身中手动运行shell命令?

欣赏任何洞察力。

共有1个答案

皇甫喜
2023-03-14

工作本身?不是真的,但是您可以在作业完成后在main函数中完成

//prior code above

job.waitForCompletion(true);

FileSystem fs = FileSystem.get(conf);

String job1Dir = "/dev/project/job1/output";
String combinedDir = "(/dev/project/combinedoutput";

Path job1Path = new Path(job1Dir+*/);


FileStatus[] job1Files = fs.globStatus(job1Path);

for(file: job1Files){
    if(file.isFile()){
        String fullFileName = file.getPath().toString();
        String belowMainDir = fullFileName.subString(job1Dir.length());
        String newFileName = combinedDir+belowMainDir+"job1";
        fs.mkdirs(new Path(newFileName.subString(0,lastIndexOf("/")));
        fs.rename(file.getPath(),new Path(combinedDir+belowMainDir+"job1");
    }
}

这应该能让你的文件转移过来。对job2做同样的操作,你应该被设置。您还可以选择更改代码,以便它将复制而不是重命名,和/或在完成后删除原始job1/job2目录。

 类似资料:
  • 问题内容: 我有一个目录树,里面有很多文件。我想将所有这些文件复制到一个新目录中,但所有文件都位于该文件夹的底部。 所以我有这样的事情: 我想要这样的东西: 我很确定有一个bashcommand,但是我还没有找到它。你有什么想法? CS 问题答案: 您正在寻找扁平化目录的方法 所有文件均采用不区分大小写的名称模式。 复制一次至named 。 将列表从扩展为。

  • 我正在使用QT,我无法找到如何将文件从一个目录复制到另一个目录?我怎样才能做到这一点?

  • 我有两个独立的android应用程序项目,它们都是在android studio中制作的。我正在尝试将项目1合并到项目2中,使其成为一个应用程序。我该怎么做呢?我知道如何在eclipse中完成,但不知道如何在android studio中完成。请注意,这两个项目都是android应用程序,没有一个是android库。 任何帮助将是惊人的! 当我将项目1导入项目模块时,我在年级生成中遇到以下错误:

  • 问题内容: 将整个目录内容复制到Java或groovy中的另一个目录的方法? 问题答案: 将整个目录复制到保存文件日期的新位置。此方法将指定的目录及其所有子目录和文件复制到指定的目的地。目标是目录的新位置和名称。 如果目标目录不存在,则会创建该目录。如果目标目录确实存在,则此方法将源与目标合并,并且源优先。 为此,这是示例代码

  • 问题内容: 我有两个在android studio中制作的单独的android应用程序项目,我正在尝试将项目1合并到项目2中,以使其全部成为一个应用程序,我该怎么做呢?我知道如何在Eclipse中做到这一点,但在android studio中却不行。请注意,这两个项目都是android应用程序,都不是android库。 任何帮助都将是惊人的! 当我将项目1导入到项目模块中时,在生成成绩时出现此错误

  • 我创建了一个由Composer加载的自定义组件。 下面是加载组件时代码的结构。 MyProject 供应商 myComponent 在那之后,我创建了文件,用Codeception运行单元测试。 我的项目 真菌成分 它与命令配合得非常好: /供应商/bin/codecept运行 好吧没什么特别的。Codeception测试正常!:) 但是我猜这个过程是错误的,文件应该在目录中,对吗? 因为,此单元