Collegare le aree di lavoro di Azure Synapse Analytics e Azure Machine Learning e collegare pool di Apache Spark (deprecati)

SI APPLICA A:SDK Python azureml v1

Avviso

L'integrazione di Azure Synapse Analytics con Azure Machine Learning, disponibile nell’SDK Python v1, è deprecata. Gli utenti possono comunque usare l'area di lavoro di Synapse, registrata con Azure Machine Learning, come servizio collegato. Tuttavia, non è più possibile registrare una nuova area di lavoro di Synapse con Azure Machine Learning come servizio collegato. È consigliabile usare l’ambiente di calcolo Spark serverless e pool di Spark per Synapse collegati, disponibili nell'interfaccia della riga di comando v2 e nell’SDK Python v2. Per altre informazioni, vedere https://aka.ms/aml-spark.

Questo articolo illustra come creare un servizio collegato che collega l’area di lavoro di Azure Synapse Analytics e l’area di lavoro di Azure Machine Learning.

Con un'area di lavoro di Azure Machine Learning collegata a un'area di lavoro di Azure Synapse, è possibile collegare un pool di Apache Spark, basato su Azure Synapse Analytics, come risorsa di calcolo dedicata. È possibile usare questa risorsa per il data wrangling su larga scala oppure eseguire il training del modello, tutto dallo stesso notebook Python.

È possibile collegare l'area di lavoro di Machine Learning e l'area di lavoro di Synapse all'SDK Python o a Studio di Azure Machine Learning. È anche possibile collegare aree di lavoro e collegare un pool di Spark per Synapse con un singolo modello di Azure Resource Manager (ARM).

Prerequisiti

Importante

Per collegarsi correttamente all'area di lavoro di Synapse, è necessario disporre del ruolo di Proprietario dell'area di lavoro di Synapse. Controllare l'accesso nel portale di Azure.

Se si è solo un Collaboratore all'area di lavoro di Synapse e non si dispone di un Proprietario per l'area di lavoro di Synapse, è possibile usare solo i servizi collegati esistenti. Per altre informazioni, visitare Recuperare e usare un servizio collegato esistente.

Questo codice usa le classi LinkedService e SynapseWorkspaceLinkedServiceConfiguration, per

  • Collegare l'area di lavoro di Machine Learning ws all'area di lavoro di Azure Synapse
  • Registrare l'area di lavoro di Synapse con Azure Machine Learning come servizio collegato
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

L’identità gestita system_assigned_identity_principal_id viene creata per ogni servizio collegato. Prima di avviare la sessione di Synapse, è necessario concedere a questa identità gestita il ruolo di amministratore di Apache Spark per Synapse dell'area di lavoro di Synapse. Per altre informazioni, vedere Come gestire assegnazioni di controllo degli accessi in base al ruolo (RBAC) di Azure Synapse in Synapse Studio.

Per trovare system_assigned_identity_principal_id di un servizio collegato specifico, usare LinkedService.get('<your-mlworkspace-name>', '<linked-service-name>').

Gestire i servizi collegati

Visualizzare tutti i servizi collegati associati all'area di lavoro di Machine Learning:

LinkedService.list(ws)

Per scollegare le aree di lavoro, usare il metodo unregister():

linked_service.unregister()

Collegare l'area di lavoro di Machine Learning e l'area di lavoro di Synapse tramite Studio di Azure Machine Learning:

  1. Accedere a Studio di Azure Machine Learning

  2. Selezionare Servizi collegati nella sezione Gestisci del riquadro sinistro

  3. Selezionare Aggiungi di integrazione

  4. Nel modulo Collega area di lavoro, riempire i campi

    Campo Descrizione
    Name Specificare un nome per il servizio collegato. I riferimenti a questo servizio collegato specifico usano questo nome
    Nome della sottoscrizione Selezionare il nome della sottoscrizione associata all'area di lavoro di Machine Learning
    Area di lavoro di Synapse Selezionare l'area di lavoro di Synapse a cui si vuole collegarsi
  5. Selezionare Successivo per aprire il modulo Seleziona pool di Spark (facoltativo). In questo modulo, si seleziona il pool di Spark per Synapse da collegare all'area di lavoro

  6. Selezionare Successivo per aprire il modulo Rivedi e controllare le selezioni

  7. Selezionare Crea per completare il processo di creazione del servizio collegato

Ottenere un servizio collegato esistente

Prima di poter collegare un ambiente di calcolo dedicato per il data wrangling, è necessario avere un'area di lavoro di Machine Learning collegata a un'area di lavoro di Azure Synapse Analytics. Questa area di lavoro viene considerata come un servizio collegato. Il recupero e l'uso di un servizio collegato esistente richiede le autorizzazioni Utente o Collaboratore per l'area di lavoro di Azure Synapse Analytics.

Questo esempio recupera un servizio collegato esistente, synapselink1, dall'area di lavoro ws, con il metodo get():

from azureml.core import LinkedService

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

Collegare il pool di Spark per Synapse come ambiente di calcolo

Dopo aver recuperato il servizio collegato, collegare un pool di Apache Spark per Synapse come risorsa di calcolo dedicata per le attività di data wrangling. È possibile collegare pool di Apache Spark con

Collegare un pool tramite Studio

  1. Accedere a Studio di Azure Machine Learning
  2. Selezionare Servizi collegati nella sezione Gestisci del riquadro sinistro
  3. Selezionare l'area di lavoro di Synapse
  4. Selezionare i pool di Spark collegati in alto a sinistra
  5. Selezionare Collega
  6. Selezionare il pool di Apache Spark dall'elenco e specificare un nome
    1. Questo elenco identifica i pool di Spark per Synapse disponibili che possono essere collegati all’ambiente di calcolo
    2. Per creare un nuovo pool di Spark per Synapse, vedere Avvio rapido: Creare un nuovo pool di Apache Spark serverless usando il portale di Azure
  7. Selezionare Collega selezionato

Collegare un pool con l’SDK Python

È anche possibile usare l’SDK Python per collegare un pool di Apache Spark, come illustrato in questo esempio di codice:

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

Verificare che il pool di Apache Spark sia collegato.

ws.compute_targets['Synapse Spark pool alias']

Questo codice

  1. Configura SynapseCompute con

    1. LinkedService, linked_service creato o recuperato nel passaggio precedente
    2. Tipo di destinazione di calcolo da collegare, in questo caso SynapseSpark
    3. Nome del pool di Apache Spark. Il nome deve corrispondere a un pool di Apache Spark esistente, presente nell'area di lavoro di Azure Synapse Analytics
  2. Crea un ComputeTarget di Machine Learning passando in

    1. L'area di lavoro di Machine Learning da usare, ws
    2. Nome che si vuole usare per fare riferimento all’ambiente di calcolo all'interno dell'area di lavoro di Azure Machine Learning
    3. attach_configuration specificato durante la configurazione dell'ambiente di calcolo di Synapse
      1. La chiamata a ComputeTarget.attach() è asincrona, quindi l'esecuzione dell'esempio viene bloccata fino al completamento della chiamata

Passaggi successivi