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

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

有人知道如何解决这个问题吗?也就是说,让Job2不必等待。
似乎是链式工作的问题。我认为它应该可以解决这个问题。

最佳答案

  • Job 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
    }`
    

  • 这有帮助吗?

    关于java - 后续作业无法立即读取前一个作业的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8134348/

    10-13 00:05