2012-01-02 11 views
1

每當我在主要方法中運行hadoop作業時,我主要做的唯一事情就是完成作業。例如可以說,我有這樣的主要方法:主要方法中的Hadoop控制作業

 public static void main(String[] args) 
     { 
      System.out.println("before"); 


      //code for creating job 
      //run job 

      System.out.println("after"); 
     } 

起初,我只能運行作業,沒有任何這些消息的出現。我試圖通過一個單獨的線程來運行這個工作,但是我完成的唯一的事情是在我的工作提交和完成之前出現兩條消息。有什麼辦法可以打印「之前」,做這項工作,然後打印「之後」?

這是一個虛擬的例子。我真正想要做的是在一段時間(真正)循環中運行作業,根據這些條件創建一些條件並運行其他作業,直到出現中斷爲止。我認爲我提到的那兩個問題是相似的,所以通過解決這個虛擬例子,我想我可以解決我真正的問題。

我不是在尋找像Oozie這樣的東西,因爲我確信有一個更簡單的方法來做到這一點。謝謝。

+0

您的意思是在打印之後等待作業完成後纔打印? – Tudor 2012-01-02 22:38:59

+0

是:D。打印之前,運行並完成,然後打印。 – jojoba 2012-01-02 23:28:08

回答

4

是的,你可以。

方法如下:

job.waitForCompletion(true); 

通常,當你提交你的工作,如果你做到這一點,將提交它,直到它已收到確認不會退出線程。那麼你應該可以看到打印輸出。

+0

這是我所擁有的,它仍然無法正常工作..框架以某種方式不讓我控制我的主要課程,因爲我想...我明天會再試一次,看看我是否做錯了什麼,我會發布結果。感謝:D – jojoba 2012-01-03 00:21:03

+0

我終於嘗試它,它的工作。我正在使用java線程和奇怪的東西正在進行,但是當我使用單線程它的工作..謝謝 – jojoba 2012-02-08 18:24:21