2017-05-25 11 views
0

クラスタ内の隠れたREST APIを使用してスパークジョブをトリガしようとしています。私はspark jobを起動することができますが、明示的にkillしない限り、何度も何度も実行し続けます。RESTのスパークジョブをトリガすると無限にジョブが実行されます

私の要求は、私が仕事を提出し、一度だけ、それを実行するために期待してい

curl -X POST http://sparkmaster:6066/v1/submissions/create --header "Content-Type:application/json;charset=UTF-8" --data '{ 
    "action" : "CreateSubmissionRequest", 
    "appArgs" : ["10"], 
    "appResource" : "file:/path/to/myapp.jar", 
    "clientSparkVersion" : "1.6.1", 
    "environmentVariables" : { 
     "SPARK_ENV_LOADED" : "1" 
    }, 
    "mainClass" : "com.brevitaz.app.Main", 
    "sparkProperties" : { 
     "spark.jars" : "file:/path/to/myapp.jar", 
     "spark.driver.supervise" : "true", 
     "spark.app.name" : "MySparkJob", 
     "spark.eventLog.enabled": "true", 
     "spark.submit.deployMode" : "client", 
     "spark.master" : "spark://sparkmaster:6066" 
    } 
}' 

次応答

{ 
    "action" : "CreateSubmissionResponse", 
    "message" : "Driver successfully submitted as driver-20170524105859-0022", 
    "serverSparkVersion" : "1.6.1", 
    "submissionId" : "driver-20170524105859-0022", 
    "success" : true 
} 

のように見えます。スパークで同じことを達成する方法はありますか?

私はスパークジョブをトリガーする他の方法も開いています。私が必要とするのは、スカラベースのWebアプリケーションからspark jobの実行を一度起動することだけです。

答えて

0

API呼び出しで "spark.driver.supervise": "true"を指定しました。これは、ゼロ以外の戻りコードで終了するたびにアプリケーションを再起動させる原因と思われます。

公式スパークの公式文書から以下を参照してください。

http://spark.apache.org/docs/latest/spark-standalone.html

また、スタンドアロンクラスタモードでは、それがゼロ以外の終了コードで終了した場合は、自動的にあなたの アプリケーションを再起動してサポートしています。 この機能を使用するには、アプリケーションを起動するときに、--superviseフラグを に送信することができます。

監督フラグをfalseに設定してみてください。お役に立てれば。

関連する問題