Vinculación de las áreas de trabajo de Azure Synapse Analytics y Azure Machine Learning, y exposición de grupos de Apache Spark (en desuso)

SE APLICA A:Azure ML del SDK de Python v1

Advertencia

La integración de Azure Synapse Analytics con Azure Machine Learning, disponible en el SDK de Python v1, está en desuso. Los usuarios todavía pueden usar el área de trabajo de Synapse, registrada con Azure Machine Learning como servicio vinculado. Sin embargo, ya no se puede registrar una nueva área de trabajo de Synapse con Azure Machine Learning como servicio vinculado. Se recomienda usar el proceso de Spark sin servidor y los grupos de Synapse Spark conectados, disponibles en la CLI v2 y el SDK de Python v2. Para más información, visite https://aka.ms/aml-spark.

En este artículo, aprenderá a crear un servicio vinculado que vincule el área de trabajo de Azure Synapse Analytics y el área de trabajo de Azure Machine Learning.

Con un área de trabajo de Azure Machine Learning, vinculada a un área de trabajo de Azure Synapse, puede adjuntar un grupo de Apache Spark, con tecnología de Azure Synapse Analytics, como un recurso de proceso dedicado. Puede usar este recurso para la limpieza y transformación de datos a escala, o bien puede realizar el entrenamiento del modelo, todo ello desde el mismo cuaderno de Python.

Puede vincular ambas áreas de trabajo mediante el SDK de Python o el Estudio de Azure Machine Learning. También puede vincular áreas de trabajo, y adjuntar un grupo de Spark de Synapse, con una sola plantilla de Azure Resource Manager (ARM).

Requisitos previos

Importante

Para vincular correctamente el área de trabajo de Synapse, debe tener el rol Propietario en ella. Compruebe el acceso en Azure Portal.

Si solo es Colaborador del área de trabajo de Synapse y no tiene ningún Propietario para ese área de trabajo, solo puede usar los servicios vinculados existentes. Para obtener más información, visite Recuperar y usar un servicio vinculado existente.

Este código emplea las clases LinkedService y SynapseWorkspaceLinkedServiceConfiguration, para

  • Vincular el área de trabajo de Machine Learning ws con el área de trabajo de Azure Synapse
  • Registrar el área de trabajo de Synapse con Azure Machine Learning como servicio vinculado
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)

Importante

Se crea una identidad administrada system_assigned_identity_principal_id para cada servicio vinculado. Debe conceder a esta identidad administrada el rol Administrador de Apache Spark de Synapse del área de trabajo de Synapse antes de iniciar la sesión de Synapse. Para más información, visite Administración de asignaciones de RBAC de Azure Synapse en Synapse Studio.

Utilice LinkedService.get('<your-mlworkspace-name>', '<linked-service-name>') para localizar el valor system_assigned_identity_principal_id de un servicio vinculado específico.

Administración de servicios vinculados

Consulte todos los servicios vinculados asociados con el área de trabajo de Machine Learning:

LinkedService.list(ws)

Para desvincular las áreas de trabajo, use el método unregister():

linked_service.unregister()

Vincule el área de trabajo de Machine Learning y el área de trabajo de Synapse mediante Estudio de Azure Machine Learning:

  1. Inicie sesión en Azure Machine Learning Studio.

  2. Seleccione Servicios vinculados en la sección Administrar del panel izquierdo

  3. Seleccione Agregar integración

  4. Rellene los campos del formulario Vincular área de trabajo.

    Campo Descripción
    Nombre Indique un nombre para el servicio vinculado. Las referencias a este servicio vinculado específico usan este nombre
    Nombre de suscripción Seleccione el nombre de la suscripción asociada al área de trabajo de Machine Learning
    Área de trabajo de Synapse Seleccione el área de trabajo de Synapse a la que desea vincular
  5. Seleccione Siguiente para abrir el formulario Selección de los grupos de Spark (opcional) . En este formulario, seleccione el grupo de Spark de Synapse que se va a asociar al área de trabajo.

  6. Seleccione Siguiente para abrir el formulario Revisar y comprobar las selecciones

  7. Seleccione Crear para completar el proceso de creación del servicio vinculado

Obtención de un servicio vinculado existente

Para poder adjuntar un proceso dedicado para la limpieza de datos, debe tener un área de trabajo de Machine Learning vinculada a un área de trabajo de Azure Synapse Analytics. Nos referimos a este área de trabajo como un servicio vinculado. La recuperación y el uso de un servicio vinculado existente requieren permisos de Usuario o Colaborador en el área de trabajo de Azure Synapse Analytics.

En este ejemplo se recupera un servicio vinculado existente ( synapselink1 ) del área de trabajo ws, con el método get():

from azureml.core import LinkedService

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

Asociación de un grupo de Spark de Synapse como proceso

Después de recuperar el servicio vinculado, conecte un grupo de Apache Spark de Synapse como recurso de proceso dedicado para las tareas de limpieza y transformación de datos. Puede asociar grupos de Apache Spark con

Conexión de un grupo mediante el Estudio de Azure Machine Learning

  1. Inicie sesión en Azure Machine Learning Studio.
  2. Seleccione Servicios vinculados en la sección Administrar del panel izquierdo
  3. Seleccione el área de trabajo de Synapse
  4. Seleccione grupos de Spark conectados en la parte superior izquierda
  5. Seleccione Attach (Asociar).
  6. Seleccione el grupo de Spark de Synapse en la lista y proporcione un nombre
    1. Esta lista identifica los grupos de Synapse Spark disponibles que se pueden asociar al proceso
    2. Para crear un nuevo grupo de Synapse Spark, consulte Inicio rápido: creación de un nuevo grupo de Apache Spark sin servidor mediante Azure Portal
  7. Seleccione Asociar selección

Conexión de un grupo mediante el SDK para Python

También puede emplear el SDK de Python para adjuntar un grupo de Apache Spark, como se muestra en este ejemplo de código:

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()

Compruebe que el grupo de Apache Spark está conectado.

ws.compute_targets['Synapse Spark pool alias']

Este código

  1. Configura el SynapseCompute con

    1. El LinkedService, linked_service que creó o recuperó en el paso anterior
    2. El tipo de destino de proceso que desea adjuntar, en este caso, SynapseSpark
    3. Nombre del grupo de Apache Spark. El nombre debe coincidir con un grupo de Apache Spark existente en el área de trabajo de Azure Synapse Analytics
  2. Crea un ComputeTarget de aprendizaje automático pasando

    1. El área de trabajo de Machine Learning que desea usar, ws.
    2. El nombre que desea usar para hacer referencia al proceso en el área de trabajo de Azure Machine Learning
    3. El attach_configuration que especificó al configurar el proceso de Synapse
      1. La llamada a ComputeTarget.attach() es asincrónica, por lo que la ejecución de ejemplo se bloquea hasta que se completa la llamada

Pasos siguientes