【问题标题】:How can I get the jobId of current SparkContext?如何获取当前 SparkContext 的 jobId?
【发布时间】:2021-12-24 14:22:36
【问题描述】:

所有其他问题似乎都解决了获取 Spark applicationId 的问题。我想以编程方式取消需要 jobId 的 spark 作业。

spark.sparkContext.cancelJob(jobId)

【问题讨论】:

    标签: scala apache-spark databricks


    【解决方案1】:

    类似于下面的方式。

    sc.applicationId
    

    【讨论】:

    • 不,这不起作用。
    • 错误信息是什么?
    【解决方案2】:

    您可以为此用例使用以下代码逻辑。

    步骤 01:获取工作详细信息。

    import requests
    import json
    class BearerAuth(requests.auth.AuthBase):
        def __init__(self, token):
            self.token = token
        def __call__(self, r):
            r.headers["authorization"] = "Bearer " + self.token
            return r
    response = requests.get('https://databricksinstance/api/2.0/jobs/list', auth=BearerAuth('token')).json()
    print(response)
    

    Step-02:取消job rest api调用

    同样的代码,只是把网址改成这样

    https://<databricks-instance>/api/2.1/jobs/runs/cancel
    

    参考:link

    【讨论】:

      【解决方案3】:

      火花状态跟踪器用于监控作业和阶段进度。
      在您的情况下,您可以获取所有活动的作业 ID:

          sc.statusTracker.getActiveJobIds
      
      

      official scala doc

      【讨论】:

        猜你喜欢
        • 2017-09-06
        • 2015-03-20
        • 2015-12-25
        • 2019-04-22
        • 2011-03-01
        • 2014-09-27
        • 2011-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多