你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 Azure Synapse Analytics 工作区和 Azure 机器学习工作区进行链接并附加 Apache Spark 池(已停用)

适用于:Python SDK azureml v1

警告

Python SDK v1 中 Azure Synapse Analytics 与 Azure 机器学习的集成已停用。 用户仍然可以使用在 Azure 机器学习中注册为链接服务的 Synapse 工作区。 但新的 Synapse 工作区不能再在 Azure 机器学习中注册为链接服务。 建议使用 CLI v2 和 Python SDK v2 中提供的无服务器 Spark 计算和附加的 Synapse Spark 池。 有关详细信息,请访问 https://aka.ms/aml-spark

在本文中,你将了解如何创建一个链接服务来链接 Azure Synapse Analytics 工作区和 Azure 机器学习工作区

通过将 Azure 机器学习工作区与 Azure Synapse 工作区进行链接,你可以将 Apache Spark 池(由 Azure Synapse Analytics 提供支持)作为专用计算资源进行附加。 可以将该资源用于大规模的数据整理,也可以完全从同一 Python 笔记本进行模型训练。

可以通过 Python SDKAzure 机器学习工作室链接 ML 工作区和 Synapse 工作区。 还可以链接工作区并使用单个 Azure 资源管理器 (ARM) 模板附加 Synapse Spark 池。

先决条件

重要

若要成功链接到 Synapse 工作区,你必须获授 Synapse 工作区的“所有者”角色。 查看 Azure 门户中的访问权限。

如果你只是 Synapse 工作区的“参与者”,没有该 Synapse 工作区的“所有者”角色,则你只能使用现有的链接服务。 有关详细信息,请访问检索和使用现有的链接服务

以下代码使用 LinkedServiceSynapseWorkspaceLinkedServiceConfiguration 类,目的是

  • 将机器学习工作区 ws 与 Azure Synapse 工作区链接
  • 将 Synapse 工作区作为链接服务注册到 Azure 机器学习
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 机器学习工作室链接机器学习工作区和 Synapse 工作区:

  1. 登录到 Azure 机器学习工作室

  2. 在左窗格的“管理”部分选择“链接服务”

  3. 选择“添加集成”

  4. 在“链接工作区”窗体上,填充字段

    字段 描述
    名称 为链接服务提供一个名称。 对此特定链接服务的引用使用此名称
    订阅名称 选择与机器学习工作区关联的订阅的名称
    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 机器学习工作室
  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. LinkedService,即在上一步创建或检索的 linked_service
    2. 要附加的计算目标的类型 - 在此示例中为 SynapseSpark
    3. Apache Spark 池的名称。 该名称必须与 Azure Synapse Analytics 工作区中存在的现有 Apache Spark 池相同
  2. 通过传入以下项来创建机器学习 ComputeTarget

    1. 要使用的机器学习工作区 ws
    2. 要在 Azure 机器学习工作区中用来表示计算的名称
    3. 配置 Synapse 计算时指定的 attach_configuration
      1. 对 ComputeTarget.attach() 的调用是异步的,因此在调用完成之前,示例执行无法使用

后续步骤