java - Hadoop作业链:跟踪作业索引

标签 java hadoop

我把工作连在一起。 reduce at round i的输出是round Mappersetup() i+1中所需的文件。我正在尝试在reduce中获取此文件的名称。什么是访问作业索引的好方法?也许给作业指定名称i并在reduce中访问该名称?

更新对于每个作业,我需要报告一个值,该值是我在reduce中计算的每个作业的摘要统计信息(我有一个reducer)。如何将该值输出到其自己的文件中或追加到单个文件中?我的输出路径已经用于主要计算。

最后,我将摘要统计信息附加到每个 reducer 的cleanup中的HDFS文件中,并且每个作业只有一个 reducer 。

@Override
protected void cleanup(Context context) throws IOException, InterruptedException {
    FileSystem hdfs = FileSystem.get(context.getConfiguration());
    FSDataOutputStream os = hdfs.append(new Path(COST_FILENAME));
    PrintStream out = new PrintStream(os);
    out.println(String.valueOf(cost));
    out.close();
}

最佳答案

一种简单的解决方案是使用Job#setInputPath()Job#setOutputPath()为作业使用不同的输入/输出文件夹。

  • job1:输入:input,输出:output-1
  • job2:输入:output-1,输出:output-2
  • ...
  • jobN:输入:output-(N-1),输出:output-N
  • 关于java - Hadoop作业链:跟踪作业索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21539184/

    相关文章:

    hadoop - 来自 2 个表的不同值

    java - 如何从指定路径加载 .java 文件并检索其中声明的方法?

    java - 使用 NetBeans 开始使用 Java 进行编码

    java - PropertyChangeSupport 和 equals 方法

    java - 在Windows 7 64位和Java 8上构建hadoop 2.6.0时出现问题

    sql - Hive的SQL查询失败

    java - 使用 LSOutput 在 xml 序列化期间指定换行符类型

    Java boolean 值未从 if 语句中传递出去

    java - MapReduce Hadoop作业总体进展

    hadoop - 如何删除 Hive 中的两个分区列之一?