后续的Job无法立即读取前一个Job的输出。

问题描述 投票:1回答:1

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

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

有人知道如何解决这个问题吗?也就是让Job2不用等待,这好像是Chain Job的问题。我想应该有办法解决这个问题。

java hadoop mapreduce
1个回答
0
投票
  1. Job2有必要下载文件到本地文件系统吗?你的job不能脱离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
    }`
    

这样做有帮助吗?

© www.soinside.com 2019 - 2024. All rights reserved.