2012-01-02 5 views
1

メインメソッド内でhadoopジョブを実行するたびに、メインが行うのはジョブを完了させる唯一の方法です。例えば、私はこの主な方法があると言うことができます:メインメソッド内のHadoopコントロールジョブ

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


      //code for creating job 
      //run job 

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

最初は私はこれらのメッセージが表示されずにジョブを実行することができます。私は別のスレッドでジョブを実行しようとしましたが、私が達成した唯一の事は、ジョブが送信され、完了する前に両方のメッセージを表示させることです。私は "前"に印刷し、仕事をしてから "後"に印刷することができる方法はありますか?

これはダミーの例です。私が本当にやりたいことは、while(真)ループでジョブを実行し、休憩が現れるまで、それらの条件に基づいて他のジョブを実行して実行することです。私が言及した2つの問題は類似していると思います。だから、ダミーの例を解決することで、私は本当の問題を解決できると思います。

私はOozieのようなものを探しているわけではありません。なぜなら、これを行うための簡単な方法があるからです。ありがとう。

+0

印刷する前にジョブが終了するのを待つことを意味しますか? – Tudor

+0

はい:D。実行前、実行中、完了後、印刷後。 – jojoba

答えて

4

はいできます。

job.waitForCompletion(true); 

は通常、あなたの仕事を提出するときは、この操作を行う場合は、それを提出し、それが確認を受信するまで、スレッドを終了しない:ここでは

はどのようにあります。印刷物を見ることができるはずです。

+0

これは私が持っているものですが、それでもまだ動作しません。フレームワークは何とか私のメインクラスを制御できないようにします。明日また私は何かが間違っていて、私は投稿します結果。ありがとう:D – jojoba

+0

私はついにそれを試してみると、それは働いた。私はJavaスレッドを使用していたし、奇妙なことが起こっていたが、私はそれが働いていた単一のスレッドを使用して..おかげで – jojoba

関連する問題