CLI (v2) Spark 作业 YAML 架构
注意
本文档中详细介绍的 YAML 语法基于最新版本的 ML CLI v2 扩展的 JSON 架构。 此语法必定仅适用于最新版本的 ML CLI v2 扩展。 可以在 https://azuremlschemasprod.azureedge.net/ 上查找早期扩展版本的架构。
YAML 语法
密钥 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
$schema |
字符串 | YAML 架构。 如果使用 Azure 机器学习 VS Code 扩展来创作 YAML 文件,则可通过在文件顶部包含 $schema 来调用架构和资源完成操作。 |
||
type |
const | 必需。 作业类型。 | spark |
|
name |
字符串 | 作业的名称。 对工作区中的所有作业必须唯一。 如果省略此项,Azure 机器学习将为该名称自动生成一个 GUID。 | ||
display_name |
字符串 | 作业在工作室 UI 中的显示名称。 在工作区中可以不唯一。 如果省略此项,Azure 机器学习将为显示名称自动生成人类可读的形容词-名词标识符。 | ||
experiment_name |
字符串 | 用于对作业进行组织的试验名称。 工作室的“试验”选项卡中相应的试验下整理了每项作业的运行记录。 如果省略此项,则在创建作业时,Azure 机器学习将默认使用工作目录的名称。 | ||
description |
字符串 | 作业的说明。 | ||
tags |
object | 作业的标记字典。 | ||
code |
字符串 | 要上传并用于作业的源代码目录的本地路径。 | ||
code |
string | 必需。 包含此作业的源代码和脚本的文件夹的位置。 | ||
entry |
对象 | 必需。 作业的入口点。 它可以定义 file 。 |
||
entry.file |
string | 包含此作业的源代码和脚本的文件夹的位置。 | ||
py_files |
object | 要放置在 PYTHONPATH 中以便成功执行作业的 .egg 、.zip 或 .py 文件的列表。 |
||
jars |
对象 | 要包含在 Spark 驱动程序和执行程序 CLASSPATH 上以便成功执行作业的 .jar 文件列表。 |
||
files |
对象 | 应复制到每个执行程序以便成功执行作业的工作目录的文件列表。 | ||
archives |
对象 | 应提取到每个执行程序的工作目录中的存档列表,以便成功执行作业。 | ||
conf |
对象 | Spark 驱动程序和执行程序属性。 请参阅 conf 键的属性 |
||
environment |
字符串或对象 | 用于作业的环境。 此环境可以是对工作区中现有版本受控环境的引用,也可以是对内联环境规范的引用。 若要引用现有环境,请使用 azureml:<environment_name>:<environment_version> 语法或 azureml:<environment_name>@latest (引用环境的最新版本)。 若要以内联方式定义环境,请遵循环境架构。 排除 name 和 version 属性,因为内联环境不支持这两个属性。 |
||
args |
string | 应传递到作业入口点 Python 脚本的命令行参数。 这些参数可能包含输入数据路径以及写入输出的位置,例如 "--input_data ${{inputs.<input_name>}} --output_path ${{outputs.<output_name>}}" |
||
resources |
对象 | Azure 机器学习无服务器 Spark 计算要使用的资源。 应定义 compute 或 resources 中的一个。 |
||
resources.instance_type |
字符串 | 要用于 Spark 池的计算实例类型。 | standard_e4s_v3 、standard_e8s_v3 、standard_e16s_v3 、standard_e32s_v3 、standard_e64s_v3 。 |
|
resources.runtime_version |
字符串 | Spark 运行时版本。 | 3.2 、3.3 |
|
compute |
string | 要执行作业的附加 Synapse Spark 池的名称。 应定义 compute 或 resources 中的一个。 |
||
inputs |
object | 作业的输入字典。 键是作业上下文中的输入名称,值是输入值。 可以在 args 中使用 ${{ inputs.<input_name> }} 表达式引用输入。 |
||
inputs.<input_name> |
数字、整数、布尔值、字符串或对象 | 文字值(数字、整数、布尔值或字符串类型)或包含作业输入数据规范的对象之一。 | ||
outputs |
object | 作业的输出配置字典。 键是作业上下文中的输出名称,值是输出配置。 可以在 args 中使用 ${{ outputs.<output_name> }} 表达式引用输出。 |
||
outputs.<output_name> |
object | Spark 作业输出。 通过提供包含作业输出规范的对象,可以将 Spark 作业的输出写入到某个文件或文件夹位置。 | ||
identity |
对象 | 此标识用于数据访问。 该标识可以是 UserIdentityConfiguration、ManagedIdentityConfiguration 或 None。 对于 UserIdentityConfiguration,作业提交器的标识将用于访问输入数据并将结果写入输出文件夹。 否则基于 Spark 计算类型确定适当的标识。 |
conf
键的属性
键 | 类型 | 说明 | 默认值 |
---|---|---|---|
spark.driver.cores |
整型 | Spark 驱动程序的核心数。 | |
spark.driver.memory |
字符串 | 为 Spark 驱动程序分配的内存,以千兆字节 (GB) 为单位,例如 2g 。 |
|
spark.executor.cores |
integer | Spark 执行程序的核心数。 | |
spark.executor.memory |
字符串 | 为 Spark Executor 分配的内存,以千兆字节 (GB) 为单位,例如 2g 。 |
|
spark.dynamicAllocation.enabled |
boolean | 是否应动态分配执行程序,作为 True 或 False 值。 如果此属性设置为 True ,则定义 spark.dynamicAllocation.minExecutors 和 spark.dynamicAllocation.maxExecutors 。 如果此属性设置为 False ,则定义 spark.executor.instances 。 |
False |
spark.dynamicAllocation.minExecutors |
integer | 用于动态分配的 Spark 执行程序实例的最小数目。 | |
spark.dynamicAllocation.maxExecutors |
integer | 用于动态分配的 Spark 执行程序实例的最大数目。 | |
spark.executor.instances |
integer | Spark 执行程序实例的数目。 |
作业输入
键 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
type |
字符串 | 作业输入的类型。 为指向单个文件源的输入数据指定 uri_file ,或为指向文件夹源的输入数据指定 uri_folder 。 详细了解数据访问。 |
uri_file 、uri_folder |
|
path |
字符串 | 用作输入的数据的路径。 输入数据的 URI,例如可以使用的 azureml:// 、abfss:// 和 wasbs:// 。 有关如何使用 azureml:// URI 格式的详细信息,请参阅核心 YAML 语法。 |
||
mode |
字符串 | 将数据传送到计算目标的模式。 direct 模式会将存储位置 URL 作为作业输入传入。 你完全负责处理存储访问凭据。 |
direct |
作业输出
键 | 类型 | 说明 | 允许的值 | 默认值 |
---|---|---|---|---|
type |
字符串 | 作业输出的类型。 | uri_file 、uri_folder |
|
path |
string | 输入数据的 URI,例如 azureml:// 、abfss:// 或 wasbs:// 。 |
||
mode |
字符串 | 输出文件的模式传递到目标存储资源。 | direct |
标识配置
UserIdentityConfiguration
密钥 | 类型 | 说明 | 允许的值 |
---|---|---|---|
type |
const | 必需。 标识类型。 | user_identity |
ManagedIdentityConfiguration
密钥 | 类型 | 说明 | 允许的值 |
---|---|---|---|
type |
const | 必需。 标识类型。 | managed |
备注
az ml job
命令可用于管理 Azure 机器学习 Spark 作业。
示例
查看示例 GitHub 存储库中的示例。 下面显示了几个示例。
YAML:使用附加的 Synapse Spark 池和托管标识的独立 Spark 作业
# attached-spark-standalone-managed-identity.yaml
$schema: https://azuremlschemas.azureedge.net/latest/sparkJob.schema.json
type: spark
code: ./src
entry:
file: titanic.py
conf:
spark.driver.cores: 1
spark.driver.memory: 2g
spark.executor.cores: 2
spark.executor.memory: 2g
spark.executor.instances: 2
inputs:
titanic_data:
type: uri_file
path: azureml://datastores/workspaceblobstore/paths/data/titanic.csv
mode: direct
outputs:
wrangled_data:
type: uri_folder
path: azureml://datastores/workspaceblobstore/paths/data/wrangled/
mode: direct
args: >-
--titanic_data ${{inputs.titanic_data}}
--wrangled_data ${{outputs.wrangled_data}}
identity:
type: managed
compute: <ATTACHED_SPARK_POOL_NAME>