共用方式為


CLI (v2) Spark 元件 YAML 架構

適用於:Azure CLI ml 延伸模組 v2 (目前)

注意

本文件中詳述的 YAML 語法是以最新版 ML CLI v2 延伸模組的 JSON 結構描述為基礎。 此語法僅保證能與最新版的 ML CLI v2 延伸模組搭配運作。 您可以在 https://azuremlschemasprod.azureedge.net/ 找到舊版延伸模組的結構描述。

YAML 語法

機碼 類型 描述 允許的值 預設值
$schema 字符串 YAML 結構描述。 如果您使用 Azure Machine Learning VS Code 擴充功能來撰寫 YAML 檔案,在檔案頂端包含 $schema 可讓您叫用結構描述和資源完成。
type 常量 必要。 元件的類型。 spark
name 字符串 必要。 元件的名稱。 必須以小寫字母開頭。 允許的字元為小寫字母、數位和底線(_)。 長度上限是 255 個字元。
version 字符串 元件的版本。 如果省略,Azure 機器學習 會自動產生版本。
display_name 字符串 工作室 UI 中元件的顯示名稱。 在工作區內不一定要是唯一名稱。
description 字符串 元件的描述。
tags 物體 元件的標記字典。
code 字符串 必要。 包含元件原始碼和文稿的資料夾位置。
entry 物體 必要。 元件的進入點。 它可以定義 file
entry.file 字符串 包含元件原始碼和文稿的資料夾位置。
py_files 物體 要放在的.zip.egg.py 檔案清單PYTHONPATH,以便使用此元件成功執行作業。
jars 物體 要包含在 Spark 驅動程式和執行程式.jar上的檔案清單CLASSPATH,以便使用此元件成功執行作業。
files 物體 應複製到每個執行程式工作目錄的檔案清單,以便使用此元件成功執行作業。
archives 物體 封存清單,應該擷取至每個執行程式的工作目錄,以便使用此元件成功執行作業。
conf 物體 Spark 驅動程式和執行程序屬性。 請參閱金鑰的屬性conf
environment 字串或物件 要用於元件的環境。 此值可以是工作區中現有已建立版本環境的參考,也可以是內嵌環境規格。

若要參考現有的環境,請使用 azureml:<environment_name>:<environment_version> 語法 或 azureml:<environment_name>@latest (參考最新版的環境)。

若要內嵌定義環境,請遵循 環境架構name排除和 version 屬性,因為內嵌環境不支持它們。
args 字符串 應該傳遞至元件進入點 Python 腳本的命令行自變數。 這些自變數可能包含輸入數據的路徑和寫入輸出的位置,例如 "--input_data ${{inputs.<input_name>}} --output_path ${{outputs.<output_name>}}"
inputs 物體 元件輸入的字典。 索引鍵是元件內容中輸入的名稱,而值是輸入值。

您可以使用 args 表示式在 中${{ inputs.<input_name> }}參考輸入。
inputs.<input_name> number、integer、boolean、string 或 object 其中一個常值(類型為 number、integer、boolean 或 string),或包含 元件輸入數據規格的物件。
outputs 物體 元件的輸出組態字典。 索引鍵是元件內容中輸出的名稱,而值是輸出組態。

您可以使用 args 表示式在 中${{ outputs.<output_name> }}參考輸出。
outputs.<output_name> 物體 Spark 元件輸出。 Spark 元件的輸出可以寫入檔案或資料夾位置,方法是提供包含 元件輸出規格的物件。

索引鍵的屬性conf

機碼 類型 描述 預設值
spark.driver.cores 整數 Spark 驅動程式的核心數目。
spark.driver.memory 字符串 Spark 驅動程式的已設定記憶體,以 GB 為單位,例如 2g
spark.executor.cores 整數 Spark 執行程式的核心數目。
spark.executor.memory 字符串 Spark 執行程式的已設定記憶體,以 GB 為單位,例如 2g
spark.dynamicAllocation.enabled 布爾值 執行程式是否應該動態配置為 TrueFalse 值。 如果設定 True這個屬性,請定義 spark.dynamicAllocation.minExecutorsspark.dynamicAllocation.maxExecutors。 如果這個屬性設定為 False,請定義 spark.executor.instances False
spark.dynamicAllocation.minExecutors 整數 動態配置的 Spark 執行程式實例數目下限。
spark.dynamicAllocation.maxExecutors 整數 動態配置的 Spark 執行程式實例數目上限。
spark.executor.instances 整數 Spark 執行程序實例的數目。

元件輸入

機碼 類型 描述 允許的值 預設值
type 字符串 元件輸入的類型。 指定 uri_file 指向單一檔案來源的輸入數據,或 uri_folder 指定指向資料夾來源的輸入數據。 深入了解數據存取。 uri_fileuri_folder
mode 字符串 如何將數據傳遞至計算目標的模式。 模式會 direct 傳入記憶體位置的 URL 做為元件輸入。 您必須完全負責處理記憶體存取認證。 direct

元件輸出

機碼 類型 描述 允許的值 預設值
type 字符串 元件輸出的類型。 uri_fileuri_folder
mode 字符串 將輸出檔案傳遞至目的地記憶體資源的模式。 direct

備註

az ml component命令可用於管理 Azure 機器學習 Spark 元件。

範例

範例 GitHub 存放庫中有範例可用。 接下來會顯示數個。

YAML:範例 Spark 元件

# spark-job-component.yaml
$schema: https://azuremlschemas.azureedge.net/latest/sparkComponent.schema.json
name: titanic_spark_component
type: spark
version: 1
display_name: Titanic-Spark-Component
description: Spark component for Titanic data

code: ./src
entry:
  file: titanic.py

inputs:
  titanic_data:
    type: uri_file
    mode: direct

outputs:
  wrangled_data:
    type: uri_folder
    mode: direct

args: >-
  --titanic_data ${{inputs.titanic_data}}
  --wrangled_data ${{outputs.wrangled_data}}

conf:
  spark.driver.cores: 1
  spark.driver.memory: 2g
  spark.executor.cores: 2
  spark.executor.memory: 2g
  spark.dynamicAllocation.enabled: True
  spark.dynamicAllocation.minExecutors: 1
  spark.dynamicAllocation.maxExecutors: 4

YAML:具有Spark元件的範例管線作業

# attached-spark-pipeline-user-identity.yaml
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: Titanic-Spark-CLI-Pipeline-2
description: Spark component for Titanic data in Pipeline

jobs:
  spark_job:
    type: spark
    component: ./spark-job-component.yml
    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

    identity:
      type: user_identity

    compute: <ATTACHED_SPARK_POOL_NAME>

下一步