2012-01-02 4 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

+0

예 : D. 실행 전, 인쇄 후, 인쇄 후 인쇄. – jojoba

답변

4

가능합니다.

job.waitForCompletion(true); 

보통, 당신이 당신의 작업을 제출할 때이 작업을 수행 할 경우, 그것을 제출하고 확인서를받지 때까지 스레드를 종료하지 : 여기

는 방법이다. 인쇄물을 볼 수 있어야합니다.

+0

이것은 내가 가지고있는 것이고 여전히 작동하지 않습니다. 프레임 워크는 어떻게 든 내 기본 수업을 내가 원하는대로 통제하지 못하게합니다. 나는 내일 다시 시도 할 것이고, 나는 틀린 일을하고 게시 할 것입니다. 결과. 고마워요. D – jojoba

+0

드디어 시도해 보니 효과가있었습니다. 나는 자바 쓰레드를 사용하고 이상한 일들이 벌어지고 있었지만, 하나의 쓰레드를 사용할 때 .. – jojoba