【问题标题】:Triggering spark job from REST executes the job endlessly从 REST 触发 spark 作业会无休止地执行作业
【发布时间】:2017-05-25 16:13:27
【问题描述】:

我正在尝试使用集群中隐藏的 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
}

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

我也愿意通过其他方式触发 spark 作业。我只需要从基于 scala 的 Web 应用程序触发一次 spark 作业的执行。

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

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

    请参考以下官方 spark 的官方文档。

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-05-13
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 2018-04-04
      • 2017-11-10
      相关资源
      最近更新 更多