適用於:Azure CLI ml 延伸模組 v2 (目前)
透過 Azure Machine Learning CLI,我們可以使用命令列介面中的直覺式 YAML 語法和命令來連結並管理 Synapse Spark 集區。
若要使用 YAML 語法定義連結的 Synapse Spark 集區,YAML 檔案應涵蓋下列屬性:
name
– 所連結 Synapse Spark 集區的名稱。
type
– 將此屬性設定為 synapsespark
。
resource_id
– 此屬性應提供在 Azure Synapse Analytics 工作區建立之 Synapse Spark 集區的資源識別碼值。 Azure 資源識別碼包括
Azure 訂用帳戶識別碼
資源群組名稱
Azure Synapse Analytics 工作區名稱,以及
Synapse Spark 集區的名稱
name: <ATTACHED_SPARK_POOL_NAME>
type: synapsespark
resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>
identity
– 此屬性會定義要指派給所連結 Synapse Spark 集區的識別類型。 它可能需要下列任一個值:
若為 identity
類型 user_assigned
,您也應提供 user_assigned_identities
值的清單。 每個使用者指派的識別都應使用使用者指派識別的 resource_id
值,宣告為清單的元素。 清單中第一個使用者指派的身分識別預設會用來提交作業。
name: <ATTACHED_SPARK_POOL_NAME>
type: synapsespark
resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>
identity:
type: user_assigned
user_assigned_identities:
- resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<AML_USER_MANAGED_ID>
上述 YAML 檔案可用於 az ml compute attach
命令,當作 --file
參數。 Synapse Spark 集區可以使用以下 az ml compute attach
,連結至訂用帳戶指定資源群組中的 Azure Machine Learning 工作區:
az ml compute attach --file <YAML_SPECIFICATION_FILE_NAME>.yaml --subscription <SUBSCRIPTION_ID> --resource-group <RESOURCE_GROUP> --workspace-name <AML_WORKSPACE_NAME>
此範例顯示上方命令的預期輸出:
Class SynapseSparkCompute: This is an experimental class, and may change at any time. Please visit https://aka.ms/azuremlexperimental for more information.
{
"auto_pause_settings": {
"auto_pause_enabled": true,
"delay_in_minutes": 15
},
"created_on": "2022-09-13 19:01:05.109840+00:00",
"id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.MachineLearningServices/workspaces/<AML_WORKSPACE_NAME>/computes/<ATTACHED_SPARK_POOL_NAME>",
"location": "eastus2",
"name": "<ATTACHED_SPARK_POOL_NAME>",
"node_count": 5,
"node_family": "MemoryOptimized",
"node_size": "Small",
"provisioning_state": "Succeeded",
"resourceGroup": "<RESOURCE_GROUP>",
"resource_id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>",
"scale_settings": {
"auto_scale_enabled": false,
"max_node_count": 0,
"min_node_count": 0
},
"spark_version": "3.2",
"type": "synapsespark"
}
如果具有 YAML 規格檔案中指定名稱的已連結 Synapse Spark 集區,已在工作區中,則執行 az ml compute attach
命令會使用 YAML 規格檔案中提供的資訊,更新現有集區。 您可以更新
透過 YAML 規格檔案的值
若要顯示連結 Synapse Spark 集區的詳細資料,請執行 az ml compute show
命令。 使用 --name
參數傳遞已連結 Synapse Spark 集區的名稱,如下所示:
az ml compute show --name <ATTACHED_SPARK_POOL_NAME> --subscription <SUBSCRIPTION_ID> --resource-group <RESOURCE_GROUP> --workspace-name <AML_WORKSPACE_NAME>
此範例顯示上方命令的預期輸出:
<ATTACHED_SPARK_POOL_NAME>
{
"auto_pause_settings": {
"auto_pause_enabled": true,
"delay_in_minutes": 15
},
"created_on": "2022-09-13 19:01:05.109840+00:00",
"id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.MachineLearningServices/workspaces/<AML_WORKSPACE_NAME>/computes/<ATTACHED_SPARK_POOL_NAME>",
"location": "eastus2",
"name": "<ATTACHED_SPARK_POOL_NAME>",
"node_count": 5,
"node_family": "MemoryOptimized",
"node_size": "Small",
"provisioning_state": "Succeeded",
"resourceGroup": "<RESOURCE_GROUP>",
"resource_id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>",
"scale_settings": {
"auto_scale_enabled": false,
"max_node_count": 0,
"min_node_count": 0
},
"spark_version": "3.2",
"type": "synapsespark"
}
若要查看所有計算的清單,包括工作區中連結的 Synapse Spark 集區,請使用 az ml compute list
命令。 使用名稱參數傳遞工作區的名稱,如下所示:
az ml compute list --subscription <SUBSCRIPTION_ID> --resource-group <RESOURCE_GROUP> --workspace-name <AML_WORKSPACE_NAME>
此範例顯示上方命令的預期輸出:
[
{
"auto_pause_settings": {
"auto_pause_enabled": true,
"delay_in_minutes": 15
},
"created_on": "2022-09-09 21:28:54.871251+00:00",
"id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.MachineLearningServices/workspaces/<AML_WORKSPACE_NAME>/computes/<ATTACHED_SPARK_POOL_NAME>",
"identity": {
"principal_id": "<PRINCIPAL_ID>",
"tenant_id": "<TENANT_ID>",
"type": "system_assigned"
},
"location": "eastus2",
"name": "<ATTACHED_SPARK_POOL_NAME>",
"node_count": 5,
"node_family": "MemoryOptimized",
"node_size": "Small",
"provisioning_state": "Succeeded",
"resourceGroup": "<RESOURCE_GROUP>",
"resource_id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>",
"scale_settings": {
"auto_scale_enabled": false,
"max_node_count": 0,
"min_node_count": 0
},
"spark_version": "3.2",
"type": "synapsespark"
},
...
]
適用於:Python SDK azure-ai-ml v2 (目前)
Azure Machine Learning Python SDK 提供便利功能,可讓您使用 Azure Machine Learning Notebooks 中的 Python 程式碼,連結和管理 Synapse Spark 集區。
若要使用 Python SDK 連結 Synapse Compute,請先建立 azure.ai.ml.MLClient 類別執行個體。 這提供方便的函式與 Azure Machine Learning 服務互動。 以下程式碼範例會使用 azure.identity.DefaultAzureCredential
連線到指定 Azure 訂用帳戶資源群組中的工作區。 在以下程式碼範例中,使用下列參數定義 SynapseSparkCompute
:
name
- 新連結 Synapse Spark 集區的使用者定義名稱。
resource_id
- 稍早在 Azure Synapse Analytics 工作區中建立的 Synapse Spark 集區資源識別碼
azure.ai.ml.MLClient.begin_create_or_update() 函式呼叫會將定義的 Synapse Spark 集區連結至 Azure Machine Learning 工作區。
from azure.ai.ml import MLClient
from azure.ai.ml.entities import SynapseSparkCompute
from azure.identity import DefaultAzureCredential
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace_name = "<AML_WORKSPACE_NAME>"
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace_name
)
synapse_name = "<ATTACHED_SPARK_POOL_NAME>"
synapse_resource = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>"
synapse_comp = SynapseSparkCompute(name=synapse_name, resource_id=synapse_resource)
ml_client.begin_create_or_update(synapse_comp)
若要連結使用系統指派識別的 Synapse Spark 集區,請傳遞 IdentityConfiguration,並將類型設為 SystemAssigned
,當作 SynapseSparkCompute
類別的 identity
參數。 以下程式碼片段連結使用系統指派識別的 Synapse Spark 集區:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import SynapseSparkCompute, IdentityConfiguration
from azure.identity import DefaultAzureCredential
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace_name = "<AML_WORKSPACE_NAME>"
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace_name
)
synapse_name = "<ATTACHED_SPARK_POOL_NAME>"
synapse_resource = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>"
synapse_identity = IdentityConfiguration(type="SystemAssigned")
synapse_comp = SynapseSparkCompute(
name=synapse_name, resource_id=synapse_resource, identity=synapse_identity
)
ml_client.begin_create_or_update(synapse_comp)
Synapse Spark 集區也可以使用使用者指派的識別。 針對使用者指派的識別,您可以使用 IdentityConfiguration 類別,當作 SynapseSparkCompute
類別的 identity
參數,傳遞受控識別定義。 針對以這種方式使用的受控識別定義,請將 type
設定為 UserAssigned
。 此外,傳遞 user_assigned_identities
參數。 參數 user_assigned_identities
是 UserAssignedIdentity 類別的物件清單。 使用者指派識別的 resource_id
會填入每個 UserAssignedIdentity
類別物件。 以下程式碼片段連結使用使用者指派識別的 Synapse Spark 集區:
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
SynapseSparkCompute,
IdentityConfiguration,
UserAssignedIdentity,
)
from azure.identity import DefaultAzureCredential
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace_name = "<AML_WORKSPACE_NAME>"
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace_name
)
synapse_name = "<ATTACHED_SPARK_POOL_NAME>"
synapse_resource = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>"
synapse_identity = IdentityConfiguration(
type="UserAssigned",
user_assigned_identities=[
UserAssignedIdentity(
resource_id="/subscriptions/<SUBSCRIPTION_ID/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<AML_USER_MANAGED_ID>"
)
],
)
synapse_comp = SynapseSparkCompute(
name=synapse_name, resource_id=synapse_resource, identity=synapse_identity
)
ml_client.begin_create_or_update(synapse_comp)
注意
如果具有指定名稱的集區不在工作區中,azure.ai.ml.MLClient.begin_create_or_update()
函式會連結新的 Synapse Spark 集區。 不過,如果具有該指定名稱的 Synapse Spark 集區已連結至工作區,則呼叫 azure.ai.ml.MLClient.begin_create_or_update()
函式會使用新的一或多個識別,更新現有連結的集區。