Apache spark 如何使用spark submit获取spark Submition\u ID?

Apache spark 如何使用spark submit获取spark Submition\u ID?,apache-spark,Apache Spark,许多地方需要提交ID,比如和Spark REST API。但是,当我使用spark submit命令提交spark作业时,如何获得此SUBMISSION\u ID 附言: 我使用python[popen][2]启动spark submit作业。我想要SUBMISSION\u ID,这样我的python程序就可以通过RESTAPI监控spark作业状态::6066/v1/submissions/status/,多亏了@Pandey提供的线索。这个答案对我帮助很大 TL;博士 如果您想在本地提交s

许多地方需要
提交ID
,比如和Spark REST API。但是,当我使用
spark submit
命令提交spark作业时,如何获得此
SUBMISSION\u ID

附言:


我使用python
[popen][2]
启动
spark submit
作业。我想要
SUBMISSION\u ID
,这样我的python程序就可以通过RESTAPI监控spark作业状态:
:6066/v1/submissions/status/

,多亏了@Pandey提供的线索。这个答案对我帮助很大

TL;博士
  • 如果您想在本地提交spark作业,答案确实有效。 唯一的一点是,您必须使用群集模式提交作业, i、 例如,使用参数
    ——部署模式集群
  • 如果要远程提交spark作业,请使用spark提交API。这会有很大帮助。有关详细信息,请参阅
详细说明 注意:我只在ApacheSpark2.3.1上测试我的方法。我不能保证它在其他版本中也能工作

让我们先明确我的要求。我想要3个功能:

  • 远程提交spark作业
  • 随时检查作业状态(运行、错误、完成…)
  • 如果出现错误,请获取错误消息
  • 本地提交 注意:此答案仅在群集模式下有效

    火花工具
    Spark submit
    会有所帮助

    • 要提交作业,请参阅
    • 要检查状态,请参阅。这样,您需要一个
      SubmissionID
      。此答案告诉您如何在群集模式下获取提交id。提交id看起来像
      driver-20190315142356-0004
    • 错误消息包含在作业状态消息中
    远程提交 建议使用Spark提交API。ApacheSpark官方网站上似乎没有任何文档,所以有些人称之为隐藏API。有关详细信息,请参阅:

    • 要提交Spark作业,请使用提交API
    • 要获取作业的状态,请使用状态API:
      http://:6066/v1/submissions/status/
      。提交作业时,
      提交id
      将以json格式返回
    • 错误消息包含在状态消息中
    • 有关错误消息的更多信息:请注意状态errorFAILED之间的差异。简而言之,FAILED表示在执行Spark作业时出错(例如,未捕获的异常),而ERROR表示在提交过程中出错(例如,无效的jar路径)。错误消息包含在状态json中。如果要查看失败原因,可以通过
      http://:/log/
      访问
    下面是一个错误状态的示例(****是一个不正确的jar路径,是故意写错的):

    请看看这个。
    {
      "action" : "SubmissionStatusResponse",
      "driverState" : "ERROR",
      "message" : "Exception from the cluster:\njava.io.FileNotFoundException: File hdfs:**** does not exist.\n\torg.apache.hadoop.hdfs.DistributedFileSystem.listStatusInternal(DistributedFileSystem.java:795)\n\torg.apache.hadoop.hdfs.DistributedFileSystem.access$700(DistributedFileSystem.java:106)\n\torg.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:853)\n\torg.apache.hadoop.hdfs.DistributedFileSystem$18.doCall(DistributedFileSystem.java:849)\n\torg.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)\n\torg.apache.hadoop.hdfs.DistributedFileSystem.listStatus(DistributedFileSystem.java:860)\n\torg.apache.spark.util.Utils$.fetchHcfsFile(Utils.scala:727)\n\torg.apache.spark.util.Utils$.doFetchFile(Utils.scala:695)\n\torg.apache.spark.util.Utils$.fetchFile(Utils.scala:488)\n\torg.apache.spark.deploy.worker.DriverRunner.downloadUserJar(DriverRunner.scala:155)\n\torg.apache.spark.deploy.worker.DriverRunner.prepareAndRunDriver(DriverRunner.scala:173)\n\torg.apache.spark.deploy.worker.DriverRunner$$anon$1.run(DriverRunner.scala:92)",
      "serverSparkVersion" : "2.3.1",
      "submissionId" : "driver-20190315160943-0005",
      "success" : true,
      "workerHostPort" : "172.18.0.4:36962",
      "workerId" : "worker-20190306214522-172.18.0.4-36962"
    }