后续作业不能立即读取前一个作业的输出



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

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

有人知道怎么解决这个问题吗?也就是说,让jo2不必等待。这似乎是连锁工作的问题。我想它应该能解决这个问题。

  1. Job 2是否需要将文件下载到本地文件系统?你的作业不能处理HDFS中的文件吗?
  2. 你是这样做的吗?

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

这有帮助吗?

相关内容

  • 没有找到相关文章

最新更新