# 查询单个作业信息-ShowSingleJob
#### 功能介绍
在MRS集群中查询指定作业的详细信息，包括作业类型、执行状态、启动时间、结束时间等，用于跟踪和排查单个作业的运行情况。
#### 接口约束
无
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-mrs/zh-cn_topic_0013582897.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-mrs/mrs_02_0221.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                | 访问级别 | 资源类型（\*为必须） | 条件键                                                                                                                                                                                                                                                                                                                                                                                        | 别名          | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | mrs:cluster:getJob | Read | cluster \*  | - g:ResourceTag/\<tag-key\>   - g:EnterpriseProjectId    | mrs:job:get | -      |
     
  
 
#### URI
GET /v2/{project_id}/clusters/{cluster_id}/job-executions/{job_execution_id}
表1路径参数 
| 参数               | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| job_execution_id | 是    | String | **参数解释：** 作业ID。获取方法，请参见[获取作业ID](https://support.huaweicloud.com/api-mrs/mrs_02_9001.html)。 **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                               |
| project_id       | 是    | String | **参数解释：** 项目编号。获取方法，请参见[获取项目ID](https://support.huaweicloud.com/api-mrs/mrs_02_0011.html)。 **约束限制：** 不涉及 **取值范围：** 只能由英文字母和数字组成，且长度为\[1-64\]个字符。 **默认取值：** 不涉及                                                                     |
| cluster_id       | 是    | String | **参数解释：** 集群ID。获取方法，请参见[获取集群ID](https://support.huaweicloud.com/api-mrs/mrs_02_9001.html#mrs_02_9001__zh-cn_topic_0264280065_section177891315153619)。 **约束限制：** 不涉及 **取值范围：** 只能由英文字母、数字以及"_"和"-"组成，且长度为\[1-64\]个字符。 **默认取值：** 不涉及 |
   
#### 请求参数
无
#### 响应参数
**状态码：202**
表2响应Body参数 
| 参数         | 参数类型                                                            | 描述                                                    |
|:---|:---|:---|
| job_detail | [JobQueryBean] object | **参数解释：** 作业详细信息。 |
   
 表3JobQueryBean 
| 参数             | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|
| job_id         | String | **参数解释：** 作业ID。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| user           | String | **参数解释：** 提交作业的用户名称。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| job_name       | String | **参数解释：** 作业名称。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| job_result     | String | **参数解释：** 作业的最终执行结果，由YARN的 FinalApplicationStatus映射而来，反映作业的最终结果。 **取值范围：** - FAILED：执行失败的作业   - KILLED：执行中被手动终止的作业   - UNDEFINED：正在执行的作业   - SUCCEEDED：执行成功的作业                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| job_state      | String | **参数解释：** 作业当前所处的生命周期阶段，由YARN的 YarnApplicationState映射而来，反映作业从创建到结束的完整流转过程。 **取值范围：** - FAILED：失败   - KILLED：已终止   - NEW：已创建   - NEW_SAVING：已创建保存中   - SUBMITTED：已提交   - ACCEPTED：已接受   - RUNNING：运行中   - FINISHED：已完成                                                                                                                                                                                                                                                                       |
| job_progress   | Float  | **参数解释：** 作业执行进度，例如100表示作业已执行完成100%。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| job_type       | String | **参数解释：** 作业类型。 **取值范围：** - MapReduce：提供快速并行处理大量数据的能力，是一种分布式数据处理模式和执行环境，MRS支持提交MapReduce Jar程序。   - SparkSubmit：在查询时选择作业类型为SparkSubmit，适用于SparkPython类型的作业。   - HiveScript：建立在Hadoop基础上的开源的数据仓库，MRS支持提交HiveScript脚本。   - HiveSql：建立在Hadoop基础上的开源的数据仓库，MRS支持直接执行Hive SQL语句。   - DistCp：是Hadoop中的一个工具，用于在分布式文件系统（如 HDFS）之间高效地导入导出数据。   - SparkScript：提交SparkScript脚本，批量执行Spark SQL语句。   - SparkSql：使用Spark提供的类似SQL的Spark SQL语句，实时查询和分析用户数据。   - Flink：提供一个分布式大数据处理引擎，可对有限数据流和无限数据流进行有状态计算。    |
| started_time   | Long   | **参数解释：** 作业开始执行时间。单位：毫秒。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| submitted_time | Long   | **参数解释：** 作业提交时间。单位：毫秒。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| finished_time  | Long   | **参数解释：** 作业完成时间。单位：毫秒。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| elapsed_time   | Long   | **参数解释：** 作业执行时长。单位：毫秒。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| arguments      | String | **参数解释：** 运行参数。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| launcher_id    | String | **参数解释：** Launcher提交作业的作业编号信息。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| properties     | String | **参数解释：** 配置参数，用于传输-d参数。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| app_id         | String | **参数解释：** 作业实际提交到Yarn的编号信息。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| tracking_url   | String | **参数解释：** 日志链接地址。当前仅SparkSubmit作业支持该参数。该参数基于集群的EIP访问集群中的YARN WebUI页面，用户如果在VPC界面解绑EIP，MRS服务侧数据会因为未更新导致该参数引用旧EIP导致访问失败，可通过对集群重新进行EIP的绑定来修复该问题。 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| queue          | String | **参数解释：** 作业的资源队列名称。 **取值范围：** 只能由英文字母、数字以及"-"和"_"组成，且长度为1\~64个字符，例如为"default"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   
**状态码：400**
表4响应Body参数 
| 参数         | 参数类型   | 描述                                                                                                                                               |
|:---|:---|:---|
| error_code | String | **参数解释：** 错误码。 **取值范围：** 400：操作执行失败  |
| error_msg  | String | **参数解释：** 错误描述。 **取值范围：** 400：操作执行失败 |
   
#### 请求示例
查询单个作业请求示例
```
GET https://{endpoint}/v2/{project_id}/clusters/{cluster_id}/job-executions/{job_execution_id}
```
#### 响应示例
**状态码：202**
查询单个作业信息成功
```
{
  "job_detail" : {
    "job_id" : "431b135e-c090-489f-b1db-0abe3822b855",
    "user" : "xxxx",
    "job_name" : "pyspark1",
    "job_result" : "SUCCEEDED",
    "job_state" : "FINISHED",
    "job_progress" : 100,
    "job_type" : "SparkSubmit",
    "started_time" : 1564626578817,
    "submitted_time" : 1564626561541,
    "finished_time" : 1564626664930,
    "elapsed_time" : 86113,
    "queue" : "default",
    "arguments" : "[--class, org.apache.spark.examples.SparkPi, --driver-memory, 512MB, --num-executors, 1, --executor-cores, 1, --master, yarn-cluster, s3a://obs-test/jobs/spark/spark-examples_2.11-2.1.0.jar, 10000]",
    "launcher_id" : "application_1564622673393_0006",
    "app_id" : "application_1564622673393_0007",
    "properties" : "{}"
  }
}
```
**状态码：400**
查询单个作业信息失败
```
{
  "error_msg" : "查询作业失败",
  "error_code" : "0162"
}
```
#### SDK代码示例
SDK代码示例如下。
- [Java]
  ```
  package com.huaweicloud.sdk.test;
  import com.huaweicloud.sdk.core.auth.ICredential;
  import com.huaweicloud.sdk.core.auth.BasicCredentials;
  import com.huaweicloud.sdk.core.exception.ConnectionException;
  import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
  import com.huaweicloud.sdk.core.exception.ServiceResponseException;
  import com.huaweicloud.sdk.mrs.v2.region.MrsRegion;
  import com.huaweicloud.sdk.mrs.v2.*;
  import com.huaweicloud.sdk.mrs.v2.model.*;
  public class ShowSingleJobExeSolution {
      public static void main(String[] args) {
          // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
          // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
          String ak = System.getenv("CLOUD_SDK_AK");
          String sk = System.getenv("CLOUD_SDK_SK");
          String projectId = "{project_id}";
          ICredential auth = new BasicCredentials()
                  .withProjectId(projectId)
                  .withAk(ak)
                  .withSk(sk);
          MrsClient client = MrsClient.newBuilder()
                  .withCredential(auth)
                  .withRegion(MrsRegion.valueOf("<YOUR REGION>"))
                  .build();
          ShowSingleJobExeRequest request = new ShowSingleJobExeRequest();
          request.withJobExecutionId("{job_execution_id}");
          request.withClusterId("{cluster_id}");
          try {
              ShowSingleJobExeResponse response = client.showSingleJobExe(request);
              System.out.println(response.toString());
          } catch (ConnectionException e) {
              e.printStackTrace();
          } catch (RequestTimeoutException e) {
              e.printStackTrace();
          } catch (ServiceResponseException e) {
              e.printStackTrace();
              System.out.println(e.getHttpStatusCode());
              System.out.println(e.getRequestId());
              System.out.println(e.getErrorCode());
              System.out.println(e.getErrorMsg());
          }
      }
  }
  ```
- [Python]
  ```
  # coding: utf-8
  import os
  from huaweicloudsdkcore.auth.credentials import BasicCredentials
  from huaweicloudsdkmrs.v2.region.mrs_region import MrsRegion
  from huaweicloudsdkcore.exceptions import exceptions
  from huaweicloudsdkmrs.v2 import *
  if __name__ == "__main__":
      # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
      # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
      ak = os.environ["CLOUD_SDK_AK"]
      sk = os.environ["CLOUD_SDK_SK"]
      projectId = "{project_id}"
      credentials = BasicCredentials(ak, sk, projectId)
      client = MrsClient.new_builder() \
          .with_credentials(credentials) \
          .with_region(MrsRegion.value_of("<YOUR REGION>")) \
          .build()
      try:
          request = ShowSingleJobExeRequest()
          request.job_execution_id = "{job_execution_id}"
          request.cluster_id = "{cluster_id}"
          response = client.show_single_job_exe(request)
          print(response)
      except exceptions.ClientRequestException as e:
          print(e.status_code)
          print(e.request_id)
          print(e.error_code)
          print(e.error_msg)
  ```
- [Go]
  ```
  package main
  import (
  "fmt"
  "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
      mrs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/mrs/v2"
  "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/mrs/v2/model"
      region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/mrs/v2/region"
  )
  func main() {
      // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
      // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
      ak := os.Getenv("CLOUD_SDK_AK")
      sk := os.Getenv("CLOUD_SDK_SK")
      projectId := "{project_id}"
      auth, err := basic.NewCredentialsBuilder().
          WithAk(ak).
          WithSk(sk).
          WithProjectId(projectId).
          SafeBuild()
      if err != nil {
          fmt.Println(err)
          return
      }
      hcClient, err := mrs.MrsClientBuilder().
           WithRegion(region.ValueOf("<YOUR REGION>")).
           WithCredential(auth).
           SafeBuild()
      if err != nil {
          fmt.Println(err)
          return
      }
      client := mrs.NewMrsClient(hcClient)
      request := &model.ShowSingleJobExeRequest{}
  request.JobExecutionId = "{job_execution_id}"
  request.ClusterId = "{cluster_id}"
  response, err := client.ShowSingleJobExe(request)
  if err == nil {
          fmt.Printf("%+v\n", response)
      } else {
          fmt.Println(err)
      }
  }
  ```
- [更多]
  更多编程语言的SDK代码示例，请参见[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/MRS/sdk?api=ShowSingleJobExe&version=v2)的代码示例页签，可生成自动对应的SDK代码示例。
#### 状态码
| 状态码 | 描述         |
|:---|:---|
| 202 | 查询单个作业信息成功 |
| 400 | 查询单个作业信息失败 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-mrs/ErrorCode.html)。
