CLI (v2) Spark 作业 YAML 架构

适用于:Azure CLI ml 扩展 v2(当前)

注意

本文档中详细介绍的 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(引用环境的最新版本)。

若要以内联方式定义环境,请遵循环境架构。 排除 nameversion 属性,因为内联环境不支持这两个属性。
args string 应传递到作业入口点 Python 脚本的命令行参数。 这些参数可能包含输入数据路径以及写入输出的位置,例如 "--input_data ${{inputs.<input_name>}} --output_path ${{outputs.<output_name>}}"
resources 对象 Azure 机器学习无服务器 Spark 计算要使用的资源。 应定义 computeresources 中的一个。
resources.instance_type 字符串 要用于 Spark 池的计算实例类型。 standard_e4s_v3standard_e8s_v3standard_e16s_v3standard_e32s_v3standard_e64s_v3
resources.runtime_version 字符串 Spark 运行时版本。 3.23.3
compute string 要执行作业的附加 Synapse Spark 池的名称。 应定义 computeresources 中的一个。
inputs object 作业的输入字典。 键是作业上下文中的输入名称,值是输入值。

可以在 args 中使用 ${{ inputs.<input_name> }} 表达式引用输入。
inputs.<input_name> 数字、整数、布尔值、字符串或对象 文字值(数字、整数、布尔值或字符串类型)或包含作业输入数据规范的对象之一。
outputs object 作业的输出配置字典。 键是作业上下文中的输出名称,值是输出配置。

可以在 args 中使用 ${{ outputs.<output_name> }} 表达式引用输出。
outputs.<output_name> object Spark 作业输出。 通过提供包含作业输出规范的对象,可以将 Spark 作业的输出写入到某个文件或文件夹位置。
identity 对象 此标识用于数据访问。 该标识可以是 UserIdentityConfigurationManagedIdentityConfiguration 或 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 是否应动态分配执行程序,作为 TrueFalse 值。 如果此属性设置为 True,则定义 spark.dynamicAllocation.minExecutorsspark.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_fileuri_folder
path 字符串 用作输入的数据的路径。 输入数据的 URI,例如可以使用的 azureml://abfss://wasbs://。 有关如何使用 azureml:// URI 格式的详细信息,请参阅核心 YAML 语法
mode 字符串 将数据传送到计算目标的模式。 direct 模式会将存储位置 URL 作为作业输入传入。 你完全负责处理存储访问凭据。 direct

作业输出

类型 说明 允许的值 默认值
type 字符串 作业输出的类型。 uri_fileuri_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>

YAML:使用无服务器 Spark 计算和用户标识的独立 Spark 作业

后续步骤