連結 Azure Synapse Analytics 和 Azure Machine Learning 工作區,以及連結 Apache Spark 集區 (已淘汰)

適用於:Python SDK azureml v1

警告

Azure Synapse Analytics 與 Python SDK v1 中提供的 Azure Machine Learning 整合已淘汰。 使用者仍然可以使用向 Azure Machine Learning 註冊為連結服務的 Synapse 工作區。 不過,新的 Synapse 工作區無法再向 Azure Machine Learning 註冊為連結服務。 我們建議使用無伺服器 Spark 計算和連結的 Synapse Spark 集區,可在 CLI v2 和 Python SDK v2 中取得。 如需詳細資訊,請瀏覽 https://aka.ms/aml-spark

在本文中,您將了解如何建立連結服務,以連結 Azure Synapse Analytics 工作區和 Azure Machine Learning 工作區

透過與 Azure Synapse 工作區連結的 Azure Machine Learning 工作區,您可以連結 Azure Synapse Analytics 所提供的 Apache Spark 集區作為專用的計算資源。 您可以將此資源用於大規模資料整頓,也可以從相同的 Python 筆記本進行模型定型。

您可以使用 Python SDKAzure Machine Learning 工作室,連結 ML 工作區和 Synapse 工作區。 您也可以使用單一 Azure Resource Manager (ARM) 範本,以連結工作區和連結 Synapse Spark 集區。

必要條件

重要

若要成功連結至 Synapse 工作區,您必須獲授與 Synapse 工作區的擁有者角色。 在 Azure 入口網站中檢查您的存取權。

如果您只是 Synapse 工作區的參與者,而且您沒有該 Synapse 工作區的擁有者,則只能使用現有的連結服務。 如需詳細資訊,請瀏覽擷取並使用現有的連結服務

此程式碼會採用 LinkedServiceSynapseWorkspaceLinkedServiceConfiguration 類別,

  • 連結機器學習工作區 ws 與 Azure Synapse Analytics 工作區
  • 向 Azure Machine Learning 將 Synapse 工作區註冊為連結服務
import datetime  
from azureml.core import Workspace, LinkedService, SynapseWorkspaceLinkedServiceConfiguration

# Azure Machine Learning workspace
ws = Workspace.from_config()

#link configuration 
synapse_link_config = SynapseWorkspaceLinkedServiceConfiguration(
    subscription_id=ws.subscription_id,
    resource_group= 'your resource group',
    name='mySynapseWorkspaceName')

# Link workspaces and register Synapse workspace in Azure Machine Learning
linked_service = LinkedService.register(workspace = ws,              
                                            name = 'synapselink1',    
                                            linked_service_config = synapse_link_config)

重要

每個連結服務各建立一個受控識別 system_assigned_identity_principal_id。 在您開始 Synapse 工作階段之前,必須先將 Synapse 工作區的 Synapse Apache Spark 管理員角色授與此受控識別。 如需詳細資訊,請瀏覽如何在 Synapse Studio 中管理 Azure Synapse RBAC 指派

若要尋找特定連結服務的 system_assigned_identity_principal_id,請使用 LinkedService.get('<your-mlworkspace-name>', '<linked-service-name>')

管理連結服務

檢視與機器學習工作區相關聯的所有連結服務:

LinkedService.list(ws)

若要取消連結工作區,請使用 unregister() 方法:

linked_service.unregister()

透過 Azure Machine Learning 工作室來連結機器學習工作區和 Synapse 工作區:

  1. 登入 Azure Machine Learning 工作室

  2. 在左窗格的 [管理] 區段中,選取 [連結服務]

  3. 選取 [新增整合]

  4. 在 [連結工作區] 表單上,填入欄位

    欄位 描述
    Name 提供連結服務的名稱。 此特定連結服務的參考會使用此名稱
    訂用帳戶名稱 選取與機器學習工作區相關聯的訂用帳戶名稱
    Synapse 工作區 選取您要連結的 Synapse 工作區
  5. 選取 [下一步] 以開啟 [選取 Spark 集區] (選用) 表單。 在此表單上,請選取要附加至工作區的 Synapse Spark 集區

  6. 選取 [下一步] 以開啟 [檢閱] 表單,並檢查您的選取項目

  7. 選取 [建立],以完成連結服務建立程序

取得現有的連結服務

您必須先將機器學習工作區連結至 Azure Synapse Analytics 工作區,才能連結專用的計算進行資料整頓。 我們將此工作區稱為連結服務。 擷取和使用現有的連結服務時,需要有 Azure Synapse Analytics 工作區使用者或參與者權限。

此範例使用 get() 方法,從工作區 ws 擷取現有的連結服務 synapselink1

from azureml.core import LinkedService

linked_service = LinkedService.get(ws, 'synapselink1')

將 Synapse Spark 集區附加為計算

一旦您取得連結服務,請將 Synapse Apache Spark 集區附 加為資料整頓工作的專用計算資源。 您可以使用下列項目來連結 Apache Spark 集區:

透過工作室附加集區

  1. 登入 Azure Machine Learning 工作室
  2. 在左窗格的 [管理] 區段中,選取 [連結服務]
  3. 選取 Synapse 工作區
  4. 選取左上方的 [連結的 Spark 集區]
  5. 選取 [附加]
  6. 從清單中選取 Apache Spark 集區,並提供名稱
    1. 此清單識別可供連結至計算的 Synapse Spark 集區
    2. 若要建立新的 Synapse Spark 集區,請參閱快速入門:使用 Azure 入口網站建立新的無伺服器 Apache Spark 集區
  7. 選取 [連結選取項目]

使用 Python SDK 附加集區

您也可使用 Python SDK 來連結 Apache Spark 集區,如以下程式碼範例所示:

from azureml.core.compute import SynapseCompute, ComputeTarget

attach_config = SynapseCompute.attach_configuration(linked_service, #Linked synapse workspace alias
                                                    type='SynapseSpark', #Type of assets to attach
                                                    pool_name=synapse_spark_pool_name) #Name of Synapse spark pool 

synapse_compute = ComputeTarget.attach(workspace= ws,                
                                       name= synapse_compute_name, 
                                       attach_configuration= attach_config
                                      )

synapse_compute.wait_for_completion()

確認已附加 Apache Spark 集區。

ws.compute_targets['Synapse Spark pool alias']

此程式碼可

  1. 使用以下幾項來設定 SynapseCompute

    1. 您在上一個步驟中建立或擷取的 LinkedServicelinked_service
    2. 您要連結的計算目標類型,在此案例中為 SynapseSpark
    3. Apache Spark 集區的名稱。 此名稱必須符合 Azure Synapse Analytics 工作區中現有的 Apache Spark 集區
  2. 傳入以下幾項來建立機器學習 ComputeTarget

    1. 您要使用的機器學習工作區 ws
    2. 在 Azure Machine Learning 工作區中您要用於參考計算的名稱
    3. 您在設定 Synapse 計算時指定的 attach_configuration
      1. ComputeTarget.attach() 為非同步呼叫,因此範例會被封鎖,直到呼叫完成為止

下一步