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(引用环境的最新版本)。

若要以内联方式定义环境,请遵循环境架构。 排除 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>

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

后续步骤