
# ma-cli dli-job提交DLI Spark作业支持的命令
```
$ma-cli dli-job -h
Usage: ma-cli dli-job [OPTIONS] COMMAND [ARGS]...
  DLI spark job submission and query job details.
Options:
  -h, -H, --help  Show this message and exit.
Commands:
  get-job       Get DLI spark job details.
  get-log       Get DLI spark log details.
  get-queue     Get DLI spark queues info.
  get-resource  Get DLI resources info.
  stop          Stop DLI spark job by job id.
  submit        Submit dli spark batch job.
  upload        Upload local file or OBS object to DLI resources.
```
表1提交DLI Spark作业命令总览 
| **命令**       | **命令详情**              |
|:---|:---|
| get-job      | 查询DLI Spark作业列表及详情。   |
| get-log      | 查询DLI Spark运行日志。      |
| get-queue    | 查询DLI队列。              |
| get-resource | 查询DLI分组资源。            |
| stop         | 停止DLI Spark作业。        |
| submit       | 提交DLI Spark作业。        |
| upload       | 上传本地文件或OBS文件到DLI分组资源。 |
   
#### 使用ma-cli dli-job get-job命令查询DLI Spark作业
执行**ma-cli dli-job get-job** 查询DLI Spark作业列表或单个作业详情**。**
```
ma-cli dli-job get-job -h
Usage: ma-cli dli-job get-job [OPTIONS]
  Get DLI Spark details.
  Example:
  # Get DLI Spark job details by job name
  ma-cli dli-job get-job -n ${job_name}
  # Get DLI Spark job details by job id
  ma-cli dli-job get-job -i ${job_id}
  # Get DLI Spark job list
  ma-cli dli-job get-job --page-size 5 --page-num 1
Options:
  -i, --job-id TEXT               Get DLI Spark job details by job id.
  -n, --job-name TEXT             Get DLI Spark job details by job name.
  -pn, --page-num INTEGER RANGE   Specify which page to query.  [x>=1]
  -ps, --page-size INTEGER RANGE  The maximum number of results for this query.  [x>=1]
  -v, --verbose                   Show detailed information about DLI Spark job details.
  -C, --config-file PATH          Configure file path for authorization.
  -D, --debug                     Debug Mode. Shows full stack trace when error occurs.
  -P, --profile TEXT              CLI connection profile to use. The default profile is "DEFAULT".
  -H, -h, --help                  Show this message and exit.
```
表2参数说明 
| 参数名               | 参数类型   | 是否必选 | 参数说明                                         |
|:---|:---|:---|:---|
| -i / --job-id     | String | 否    | 查询指定DLI Spark作业ID的任务详情。                      |
| -n / --job-name   | String | 否    | 查询指定作业名称的DLI Spark作业或根据作业名称关键字过滤DLI Spark作业。 |
| -pn / --page-num  | Int    | 否    | 作业索引页，默认是第1页。                                |
| -ps / --page-size | Int    | 否    | 每页显示的作业数量，默认是20。                             |
| -v / --verbose    | Bool   | 否    | 显示详细的信息开关，默认关闭。                              |
   
**示例**：查询DLI Spark所有作业。
```
ma-cli dli-job get-job
```
![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001945827480.png "点击放大")
#### 使用ma-cli dli-job submit命令提交DLI Spark作业
执行**ma-cli dli-job submit**命令提交DLI Spark作业。
**ma-cli dli-job submit**命令需要指定一个位置参数YAML_FILE表示作业的配置文件路径，如果不指定该参数，则表示配置文件为空。配置文件是一个YAML格式的文件，里面的参数就是命令的option参数。此外，如果用户在命令行中同时指定YAML_FILE配置文件和option参数，命令行中指定的option参数的值将会覆盖配置文件相同的值。
**命令参数预览**
```
ma-cli dli-job submit -h
Usage: ma-cli dli-job submit [OPTIONS] [YAML_FILE]...
  Submit DLI Spark job.
  Example:
  ma-cli dli-job submit  --name test-spark-from-sdk
                          --file test/sub_dli_task.py
                          --obs-bucket dli-bucket
                          --queue dli_test
                          --spark-version 2.4.5
                          --driver-cores 1
                          --driver-memory 1G
                          --executor-cores 1
                          --executor-memory 1G
                          --num-executors 1
Options:
  --file TEXT                    Python file or app jar.
  -cn, --class-name TEXT         Your application's main class (for Java / Scala apps).
  --name TEXT                    Job name.
  --image TEXT                   Full swr custom image path.
  --queue TEXT                   Execute queue name.
  -obs, --obs-bucket TEXT        DLI obs bucket to save logs.
  -sv, --spark-version TEXT      Spark version.
  -st, --sc-type [A|B|C]         Compute resource type.
  --feature [basic|custom|ai]    Type of the Spark image used by a job (default: basic).
  -ec, --executor-cores INTEGER  Executor cores.
  -em, --executor-memory TEXT    Executor memory (eg. 2G/2048MB).
  -ne, --num-executors INTEGER   Executor number.
  -dc, --driver-cores INTEGER    Driver cores.
  -dm, --driver-memory TEXT      Driver memory (eg. 2G/2048MB).
  --conf TEXT                    Arbitrary Spark configuration property (eg. <PROP=VALUE>).
  --resources TEXT               Resources package path.
  --files TEXT                   Files to be placed in the working directory of each executor.
  --jars TEXT                    Jars to include on the driver and executor class paths.
  -pf, --py-files TEXT           Python files to place on the PYTHONPATH for Python apps.
  --groups TEXT                  User group resources.
  --args TEXT                    Spark batch job parameter args.
  -q, --quiet                    Exit without waiting after submit successfully.
  -C, --config-file PATH         Configure file path for authorization.
  -D, --debug                    Debug Mode. Shows full stack trace when error occurs.
  -P, --profile TEXT             CLI connection profile to use. The default profile is "DEFAULT".
  -H, -h, --help                 Show this message and exit.
```
**yaml文件预览**
```
# dli-demo.yaml
name: test-spark-from-sdk
file: test/sub_dli_task.py
obs-bucket: ${your_bucket}
queue: dli_notebook 
spark-version: 2.4.5
driver-cores: 1
driver-memory: 1G
executor-cores: 1
executor-memory: 1G
num-executors: 1
## [Optional] 
jars:
  - ./test.jar
  - obs://your-bucket/jars/test.jar
  - your_group/test.jar
## [Optional] 
files:
  - ./test.csv
  - obs://your-bucket/files/test.csv
  - your_group/test.csv
## [Optional] 
python-files:
  - ./test.py
  - obs://your-bucket/files/test.py
  - your_group/test.py
## [Optional] 
resources:
  - name: your_group/test.py
    type: pyFile
  - name: your_group/test.csv
    type: file
  - name: your_group/test.jar
    type: jar
  - name: ./test.py
    type: pyFile
  - name: obs://your-bucket/files/test.py
    type: pyFile
## [Optional]
groups:
  - group1
  - group2
```
**指定options参数提交DLI Spark作业示例：**
```
$ ma-cli dli-job submit --name test-spark-from-sdk \
                        --file test/sub_dli_task.py \
                        --obs-bucket ${your_bucket} \
                        --queue dli_test \
                        --spark-version 2.4.5 \
                        --driver-cores 1 \
                        --driver-memory 1G \
                        --executor-cores 1 \
                        --executor-memory 1G \
                        --num-executors 1
```
表3参数说明 
| **参数名**                 | **参数类型**        | **是否必选** | **参数说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| YAML_FILE               | String          | 否        | DLI Spark作业的配置文件本地路径，如果不传则表示配置文件为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| --file                  | String          | 是        | 程序运行入口文件，支持本地文件路径、OBS路径或者用户已上传到DLI资源管理系统的类型为jar或pyFile的程序包名。                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -cn / --class_name      | String          | 是        | 批处理作业的Java/Spark主类。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| --name                  | String          | 否        | 创建时用户指定的作业名称，不能超过128个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| --image                 | String          | 否        | 自定义镜像路径，格式为：组织名/镜像名:镜像版本。当用户设置**"feature"** 为"custom"时，该参数生效。用户可通过与**"feature"**参数配合使用，指定作业运行使用自定义的Spark镜像。                                                                                                                                                                                                                                                                                                                                                                                                           |
| -obs / --obs-bucket     | String          | 否        | 保存Spark作业的OBS桶，需要保存作业时配置该参数。同时也可作为提交本地文件到resource的中转站。                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| -sv/ --spark-version    | String          | 否        | 作业使用Spark组件的版本号。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| -st / --sc-type         | String          | 否        | 如果当前Spark组件版本为2.3.2，则不填写该参数。 如果当前Spark组件版本为2.3.3，则在**"feature"**为"basic"或"ai"时填写。如果不填写，则使用默认的Spark组件版本号2.3.2。                                                                                                                                                                                                                                                                                                                                                                                                         |
| --feature               | String          | 否        | 作业特性。表示用户作业使用的Spark镜像类型，默认值为basic。 - basic：表示使用DLI提供的基础Spark镜像。  - custom：表示使用用户自定义的Spark镜像。  - ai：表示使用DLI提供的AI镜像。   |
| --queue                 | String          | 否        | 用于指定队列，填写已创建DLI的队列名。必须为通用类型的队列。队列名称的获取请参考[表5]。                                                                                                                                                                                                                                                                                                                                                                                                                     |
| -ec / --executor-cores  | String          | 否        | Spark应用每个Executor的CPU核数。该配置项会替换sc_type中对应的默认参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| -em / --executor-memory | String          | 否        | Spark应用的Executor内存，参数配置例如2G，2048M。该配置项会替换**"sc_type"**中对应的默认参数，使用时必须带单位，否则会启动失败。                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| -ne / --num-executors   | String          | 否        | Spark应用Executor的个数。该配置项会替换sc_type中对应的默认参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| -dc / --driver-cores    | String          | 否        | Spark应用Driver的CPU核数。该配置项会替换sc_type中对应的默认参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| -dm / --driver-memory   | String          | 否        | Spark应用的Driver内存，参数配置例如2G，2048M。该配置项会替换**"sc_type"**中对应的默认参数，使用时必须带单位，否则会启动失败。                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| --conf                  | Array of String | 否        | batch配置项，参考[++Spark Configuration++](https://spark.apache.org/docs/latest/configuration.html)。如果需要指定多个参数，可以使用--conf conf1 --conf conf2。                                                                                                                                                                                                                                                                                                                                  |
| --resources             | Array of String | 否        | 资源包名称。支持本地文件，OBS路径及用户已上传到DLI资源管理系统的文件。如果需要指定多个参数，可以使用--resources resource1 --resources resource2。                                                                                                                                                                                                                                                                                                                                                                                                                     |
| --files                 | Array of String | 否        | 用户已上传到DLI资源管理系统的类型为file的资源包名。也支持指定OBS路径，例如：obs://桶名/包名。同时也支持本地文件。如果需要指定多个参数，可以使用--files file1 --files file2。                                                                                                                                                                                                                                                                                                                                                                                                          |
| --jars                  | Array of String | 否        | 用户已上传到DLI资源管理系统的类型为jar的程序包名。也支持指定OBS路径，例如：obs://桶名/包名。也支持本地文件。如果需要指定多个参数，可以使用--jars jar1 --jars jar2。                                                                                                                                                                                                                                                                                                                                                                                                                 |
| -pf /--python-files     | Array of String | 否        | 用户已上传到DLI资源管理系统的类型为pyFile的资源包名。也支持指定OBS路径，例如：obs://桶名/包名。也支持本地文件。如果需要指定多个参数，可以使用--python-files py1 --python-files py2。                                                                                                                                                                                                                                                                                                                                                                                                |
| --groups                | Array of String | 否        | 资源分组名称，如果需要指定多个参数，可以使用--groups group1 --groups group2。                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| --args                  | Array of String | 否        | 传入主类的参数，即应用程序参数。如果需要指定多个参数，可以使用--args arg1 --args arg2。                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| -q / --quiet            | Bool            | 否        | 提交DLI Spark作业成功后直接退出，不再同步打印任务状态。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
**示例**
- 通过YAML_FILE文件提交DLI Spark作业。
  ```
  $ma-cli dli-job submit dli_job.yaml
  ```
  ![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001945667936.png "点击放大")
  

- 指定命令行options参数提交DLI Spark作业。
  ```
  $ma-cli dli-job submit --name test-spark-from-sdk \
  >                         --file test/jumpstart-trainingjob-gallery-pytorch-sample.ipynb \
  >                         --queue dli_ma_notebook \
  >                         --spark-version 2.4.5 \
  >                         --driver-cores 1 \
  >                         --driver-memory 1G \
  >                         --executor-cores 1 \
  >                         --executor-memory 1G \
  >                         --num-executors 1
  ```
  ![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001945668192.png "点击放大")
  
 
#### 使用ma-cli dli-job get-log命令查询DLI Spark运行日志
执行**ma-cli dli-job get-log**命令查询DLI Spark作业后台的日志。
```
$ ma-cli dli-job get-log -h
Usage: ma-cli dli-job get-log [OPTIONS]
  Get DLI spark job log details.
  Example:
  # Get job log by job id
  ma-cli dli-job get-log --job-id ${job_id}
Options:
  -i, --job-id TEXT       Get DLI spark job details by job id.  [required]
  -C, --config-file TEXT  Configure file path for authorization.
  -D, --debug             Debug Mode. Shows full stack trace when error occurs.
  -P, --profile TEXT      CLI connection profile to use. The default profile is "DEFAULT".
  -H, -h, --help          Show this message and exit.
```
表4参数说明 
| 参数名           | 参数类型   | 是否必选 | 参数说明                    |
|:---|:---|:---|:---|
| -i / --job-id | String | 是    | 查询指定DLI Spark作业ID的任务日志。 |
   
**示例**：查询指定作业ID的DLI Spark作业运行日志。
```
ma-cli dli-job get-log --job-id ${your_job_id}
```
![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001945668012.png "点击放大")
#### 使用ma-cli dli-job get-queue命令查询DLI队列
执行**ma-cli dli-job get-queue** 命令查询DLI队列**。**
```
ma-cli dli-job get-queue -h
Usage: ma-cli dli-job get-queue [OPTIONS]
  Get DLI queues info.
  Example:
  # Get DLI queue details by queue name
  ma-cli dli-job get-queue --queue-name $queue_name}
Options:
  -pn, --page-num INTEGER RANGE   Specify which page to query.  [x>=1]
  -ps, --page-size INTEGER RANGE  The maximum number of results for this query.  [x>=1]
  -n, --queue-name TEXT           Get DLI queue details by queue name.
  -t, --queue-type [sql|general|all]
                                  DLI queue type (default "all").
  -tags, --tags TEXT              Get DLI queues by tags.
  -C, --config-file PATH          Configure file path for authorization.
  -D, --debug                     Debug Mode. Shows full stack trace when error occurs.
  -P, --profile TEXT              CLI connection profile to use. The default profile is "DEFAULT".
  -H, -h, --help                  Show this message and exit.
```
 表5参数说明 
| 参数名               | 参数类型   | 是否必选 | 参数说明                                   |
|:---|:---|:---|:---|
| -n / --queue-name | String | 否    | 指定需要查询的DLI队列名称。                        |
| -t / --queue-type | String | 否    | 指定查询的DLI队列类型，支持sql、general和all，默认是all。 |
| -tags / --tags    | String | 否    | 指定查询的DLI队列tags。                        |
| -pn / --page-num  | Int    | 否    | DLI队列页索引，默认是第1页。                       |
| -ps / --page-size | Int    | 否    | 每页显示的DLI队列数量，默认是20。                    |
   
**示例**：查询队列名为"dli_ma_notebook"的队列信息。
```
ma-cli dli-job get-queue --queue-name dli_ma_notebook
```
![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001973106309.png "点击放大")
#### 使用ma-cli dli-job get-resource命令查询DLI分组资源
执行**ma-cli dli-job get-resource**命令获取DLI资源详细信息，如资源名称，资源类型等。
```
$ ma-cli dli-job get-resource -h
Usage: ma-cli dli-job get-resource [OPTIONS]
  Get DLI resource info.
  Example:
  # Get DLI resource details by resource name
  ma-cli dli-job get-resource --resource-name ${resource_name}
Options:
  -n, --resource-name TEXT        Get DLI resource details by resource name.
  -k, --kind [jar|pyFile|file|modelFile]
                                  DLI resources type.
  -g, --group TEXT                Get DLI resources by group.
  -tags, --tags TEXT              Get DLI resources by tags.
  -C, --config-file TEXT          Configure file path for authorization.
  -D, --debug                     Debug Mode. Shows full stack trace when error occurs.
  -P, --profile TEXT              CLI connection profile to use. The default profile is "DEFAULT".
  -H, -h, --help                  Show this message and exit.
```
表6参数说明 
| 参数名                  | 参数类型   | 是否必选 | 参数说明                                               |
|:---|:---|:---|:---|
| -n / --resource-name | String | 否    | 按DLI分组资源名称查询DLI资源详细信息。                             |
| -k / --kind          | String | 否    | 按DLI分组资源类型查询DLI资源详细信息，支持jar、pyFile、file和modelFile。 |
| -g / --group         | String | 否    | 按DLI分组资源组名查询DLI资源组详细信息。                            |
| -tags / --tags       | String | 否    | 通过DLI分组资源tags获取DLI资源详细信息。                          |
   
**示例**：查询所有DLI分组资源信息。
```
ma-cli dli-job get-resource
```
![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001945827240.png "点击放大")
#### 使用ma-cli dli-job upload命令上传文件到DLI分组资源
**ma-cli dli-job upload**命令支持将本地文件或OBS文件上传到DLI资源组。
```
$ ma-cli dli-job upload -h
Usage: ma-cli dli-job upload [OPTIONS] PATHS...
  Upload DLI resource.
  Tips: --obs-path is need when upload local file.
  Example:
  # Upload an OBS path to DLI resource
  ma-cli dli-job upload obs://your-bucket/test.py -g test-group --kind pyFile
  # Upload a local path to DLI resource
  ma-cli dli-job upload ./test.py -g test-group -obs ${your-bucket} --kind pyFile
  # Upload local path and OBS path to DLI resource
  ma-cli dli-job upload ./test.py obs://your-bucket/test.py -g test-group -obs ${your-bucket}
Options:
  -k, --kind [jar|pyFile|file]  DLI resources type.
  -g, --group TEXT              DLI resources group.
  -tags, --tags TEXT            DLI resources tags, follow --tags `key1`=`value1`.
  -obs, --obs-bucket TEXT       OBS bucket for upload local file.
  -async, --is-async            whether to upload resource packages in asynchronous mode. The default value is False.
  -C, --config-file TEXT        Configure file path for authorization.
  -D, --debug                   Debug Mode. Shows full stack trace when error occurs.
  -P, --profile TEXT            CLI connection profile to use. The default profile is "DEFAULT".
  -H, -h, --help                Show this message and exit.
```
表7参数说明 
| 参数名                 | 参数类型   | 是否必选 | 参数说明                                   |
|:---|:---|:---|:---|
| PATHS               | String | 是    | 需要上传到DLI分组资源的本地文件路径或者OBS路径，支持同时传入多个路径。 |
| -k / --kind         | String | 否    | 上传文件的类型，支持jar、pyFile和file。             |
| -g / --group        | String | 否    | 上传文件的DLI分组名。                           |
| -tags / --tags      | String | 否    | 上传文件的tag。                              |
| -obs / --obs-bucket | String | 否    | 如果上传文件包含本地路径，则需要指定一个OBS桶作为中转。          |
| -async / --is-async | Bool   | 否    | 异步上传文件，推荐使用。                           |
   
**示例**
- 上传本地文件到DLI分组资源
  ```
  ma-cli dli-job upload ./test.py -obs ${your-bucket} --kind pyFile
  ```
  ![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001972946417.png "点击放大")
  

- 上传OBS文件到DLI分组资源
  ```
  ma-cli dli-job upload obs://your-bucket/test.py --kind pyFile
  ```
  ![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001945827360.png "点击放大")
  
 
#### 使用ma-cli dli-job stop命令停止DLI Spark作业
执行**ma-cli dli-job stop**命令停止DLI Spark作业。
```
$ ma-cli dli-job stop -h
Usage: ma-cli dli-job stop [OPTIONS]
  Stop DLI spark job by job id.
  Example:
  Stop training job by job id
  ma-cli dli-job stop --job-id ${job_id}
Options:
  -i, --job-id TEXT       Get DLI spark job event by job id.  [required]
  -y, --yes               Confirm stop operation.
  -C, --config-file TEXT  Configure file path for authorization.
  -D, --debug             Debug Mode. Shows full stack trace when error occurs.
  -P, --profile TEXT      CLI connection profile to use. The default profile is "DEFAULT".
  -H, -h, --help          Show this message and exit.
```
表8参数说明 
| 参数名           | 参数类型   | 是否必选 | 参数说明               |
|:---|:---|:---|:---|
| -i / --job-id | String | 是    | DLI Spark作业ID。     |
| -y / --yes    | Bool   | 否    | 强制关闭指定DLI Spark作业。 |
   
**示例**
```
ma-cli dli-job stop -i ${your_job_id}
```
![](https://support.huaweicloud.com/devtool-modelarts/figure/zh-cn_image_0000001972946317.png "点击放大")
