Java 后续作业无法立即读取前一作业的输出

Java 后续作业无法立即读取前一作业的输出,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,我有两个顺序作业1和作业2。Job1的输出被写入HDFS。Job2将把Job1的输出下载到本地文件系统。但是,我发现下载后文件的大小为0。这是因为当Job2开始下载时,Job1的输出仍然没有写入HDFS 为了解决这个问题,现在我必须在完成Job1之后等待一段时间,例如大约30秒,这让Job1的输出完全保持到HDFS。然后,我运行作业2 有人知道如何解决这个问题吗?也就是说,让Job2不必等待。 这似乎是连锁店的工作问题。我认为应该有办法解决这个问题 作业2是否需要将文件下载到本地文件系统?你的工

我有两个顺序作业1和作业2。Job1的输出被写入HDFS。Job2将把Job1的输出下载到本地文件系统。但是,我发现下载后文件的大小为0。这是因为当Job2开始下载时,Job1的输出仍然没有写入HDFS

为了解决这个问题,现在我必须在完成Job1之后等待一段时间,例如大约30秒,这让Job1的输出完全保持到HDFS。然后,我运行作业2

有人知道如何解决这个问题吗?也就是说,让Job2不必等待。 这似乎是连锁店的工作问题。我认为应该有办法解决这个问题

  • 作业2是否需要将文件下载到本地文件系统?你的工作不能脱离HDFS中的文件吗
  • 你是这样做的吗

    Job job1 = new Job(conf, "Job1");
    //configure job properties
    job.waitForCompletion(true);
    
    if (job.isSuccessful()) {
        Job job2 = new Job(conf2, "job2");
        //and so on
    }`
    

  • 这有帮助吗?

    我不确定,但这可能是因为缓冲数据没有写入磁盘。这是一件有趣的事情。将查询发布到
    hdfs-dev@hadoop.apache.org
    获取一些响应。