从REST触发spark工作无休止地执行作业

时间:2017-05-25 06:03:18

标签: apache-spark

我正在尝试在群集中使用隐藏的REST Api触发spark作业。我能够触发火花作业,但它会一次又一次地执行,除非我明确地杀了它。

我的请求如下所示

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
}

我希望提交作业并执行一次。有没有办法在火花中实现同样的目标?

我也有其他方式来触发火花工作。我只需要从基于scala的Web应用程序中触发执行spark job。

1 个答案:

答案 0 :(得分:0)

您已指定" spark.driver.supervise" :" true"在你的API调用中,这似乎导致应用程序每次以非零返回码退出时再次启动。

请参阅官方spark的官方文档。

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

  

此外,独立群集模式支持重新启动您的   如果退出时使用非零退出代码,则自动应用。使用   此功能,您可以将--supervise标志传递给spark-submit   在启动您的申请时。

请尝试将监督标志设置为false。希望这会有所帮助。