2011-11-15 48 views
1

我有兩個順序Job1和Job2。 Job1的輸出寫入HDFS。 Job2將下載Job1的輸出到本地文件系統。但是,我發現下載後文件的大小爲0。這是因爲當Job2開始下載時,Job1的輸出仍然沒有寫入HDFS。後續作業無法立即讀取前一作業的輸出

爲了解決這個問題,現在我必須在完成Job1之後等待一段時間,例如約30秒,這使得Job1的輸出完全持續到HDFS。然後,我運行Job2。

有誰知道如何解決這個問題?也就是說,讓Job2不必等待。 它看起來像Chain Job問題。我認爲它應該有解決這個問題的方法。

謝謝!

+0

我不確定,但這可能是由於緩衝區數據沒有寫入磁盤。這是有趣的事情。發佈一個查詢到'hdfs-dev @ hadoop.apache.org'獲得一些響應。 –

回答

0
  1. 作業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 
    }` 
    

這是否幫助?

+0

我已經試過這個,但它沒有幫助。謝謝! – afancy