Share via


Verknüpfen von Azure Synapse Analytics- und Azure Machine Learning-Arbeitsbereichen sowie Anfügen von Apache Spark-Pools (veraltet)

GILT FÜR:Python SDK azureml v1

Warnung

Die im Python SDK v1 verfügbare Azure Synapse Analytics-Integration mit Azure Machine Learning ist veraltet. Benutzer können weiterhin den Synapse-Arbeitsbereich, der bei Azure Machine Learning registriert ist, als verknüpften Dienst verwenden. Ein neuer Synapse-Arbeitsbereich kann jedoch nicht mehr bei Azure Machine Learning als verknüpfter Dienst registriert werden. Es wird empfohlen, verwaltete (automatische) Synapse-Computeressourcen und angefügte Synapse Spark-Pools zu verwenden, die in CLI v2 und Python SDK v2 verfügbar sind. Ausführliche Informationen finden Sie unter https://aka.ms/aml-spark.

In diesem Artikel wird beschrieben, wie Sie einen verknüpften Dienst erstellen, mit dem Ihr Azure Synapse Analytics-Arbeitsbereich und Azure Machine Learning-Arbeitsbereich verknüpft werden.

Nachdem Ihr Azure Machine Learning-Arbeitsbereich mit Ihrem Azure Synapse-Arbeitsbereich verknüpft wurde, können Sie einen Apache Spark-Pool (von Azure Synapse Analytics unterstützt) als dedizierte Compute-Umgebung für Data Wrangling im großen Stil anfügen oder das Modelltraining über dasselbe Python-Notebook durchführen.

Sie können Ihren ML-Arbeitsbereich und den Synapse-Arbeitsbereich über das Python SDK oder Azure Machine Learning Studio verknüpfen.

Sie können zum Verknüpfen von Arbeitsbereichen und Anfügen eines Synapse Spark-Pools auch eine ARM-Vorlage (Azure Resource Manager) verwenden.

Voraussetzungen

Wichtig

Um erfolgreich eine Verknüpfung mit dem Synapse-Arbeitsbereich herzustellen, benötigen Sie die Rolle Besitzer im Synapse-Arbeitsbereich. Überprüfen Sie Ihren Zugriff im Azure-Portal.

Wenn Sie kein Besitzer, sondern nur ein Mitwirkender für den Synapse-Arbeitsbereich sind, können Sie nur vorhandene verknüpfte Dienste verwenden. Informieren Sie sich über das Abrufen und Verwenden eines vorhandenen verknüpften Diensts.

Der folgende Code verwendet die Klassen LinkedService und SynapseWorkspaceLinkedServiceConfiguration.

  • Verknüpfen Sie Ihren Machine Learning-Arbeitsbereich ws mit dem Azure Synapse-Arbeitsbereich.
  • Registrieren Sie Ihren Synapse-Arbeitsbereich als verknüpften Dienst bei Azure Machine Learning.
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)

Wichtig

Eine verwaltete Identität (system_assigned_identity_principal_id) wird für jeden verknüpften Dienst erstellt. Dieser verwalteten Identität muss die Rolle Synapse Apache Spark-Administrator des Synapse-Arbeitsbereichs zugewiesen werden, bevor Sie die Synapse-Sitzung starten. Weisen Sie die Rolle „Synapse Apache Spark-Administrator“ der verwalteten Identität in Synapse Studio zu.

Verwenden Sie LinkedService.get('<your-mlworkspace-name>', '<linked-service-name>') zum Ermitteln von system_assigned_identity_principal_id eines bestimmten verknüpften Diensts.

Verwalten von verknüpften Diensten

Zeigen Sie alle verknüpften Dienste an, die Ihrem Machine Learning-Arbeitsbereich zugeordnet sind.

LinkedService.list(ws)

Verwenden Sie die Methode unregister(), um die Verknüpfung von Arbeitsbereichen aufzuheben.

linked_service.unregister()

Verknüpfen Sie mit den folgenden Schritten den Machine Learning-Arbeitsbereich und den Synapse-Arbeitsbereich über Azure Machine Learning Studio:

  1. Melden Sie sich bei Azure Machine Learning Studio an.

  2. Wählen Sie im linken Bereich im Abschnitt Verwalten die Option Verknüpfte Dienste aus.

  3. Wählen Sie Integration hinzufügen aus.

  4. Füllen Sie die Felder im Formular Arbeitsbereich verknüpfen aus.

    Feld BESCHREIBUNG
    Name Geben Sie einen Namen für Ihren verknüpften Dienst ein. Dieser Name wird verwendet, um auf diesen bestimmten verknüpften Dienst zu verweisen.
    Abonnementname Wählen Sie den Namen Ihres Abonnements aus, das Ihrem Machine Learning-Arbeitsbereich zugeordnet ist.
    Synapse-Arbeitsbereich Wählen Sie den Synapse-Arbeitsbereich aus, mit dem Sie eine Verknüpfung herstellen möchten.
  5. Wählen Sie Weiter aus, um das Formular Spark-Pools auswählen (optional) zu öffnen. Wählen Sie in diesem Formular aus, welcher Synapse Spark-Pool an Ihren Arbeitsbereich angefügt werden soll.

  6. Wählen Sie Weiter aus, um das Formular Überprüfung zu öffnen und Ihre Auswahl zu überprüfen.

  7. Wählen Sie Erstellen aus, um die Erstellung des verknüpften Diensts abzuschließen.

Abrufen eines vorhandenen verknüpften Diensts

Damit Sie eine dedizierte Computeressource für Data Wrangling anfügen können, benötigen Sie einen ML-Arbeitsbereich, der mit einem Azure Synapse Analytics-Arbeitsbereich verknüpft ist. Dies wird als verknüpfter Dienst bezeichnet.

Zum Abrufen und Verwenden eines vorhandenen verknüpften Diensts sind Berechtigungen vom Typ Benutzer oder Mitwirkender für den Azure Synapse Analytics-Arbeitsbereich erforderlich.

In diesem Beispiel wird ein vorhandener verknüpfter Dienst (synapselink1) aus dem Arbeitsbereich ws mit der Methode get() abgerufen.

from azureml.core import LinkedService

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

Anfügen eines Synapse Spark-Pools als Computeressource

Wenn Sie den verknüpften Dienst abgerufen haben, fügen Sie einen Synapse Apache Spark-Pool als dedizierte Computeressource für Ihre Data Wrangling-Aufgaben an.

Sie können Apache Spark-Pools über folgende Komponenten anfügen:

Anfügen eines Pools über Studio

Folgen Sie diesen Schritten:

  1. Melden Sie sich bei Azure Machine Learning Studio an.
  2. Wählen Sie im linken Bereich im Abschnitt Verwalten die Option Verknüpfte Dienste aus.
  3. Wählen Sie Ihren Synapse-Arbeitsbereich aus.
  4. Wählen Sie oben links Angefügte Spark-Pools aus.
  5. Wählen Sie Anfügen aus.
  6. Wählen Sie Ihren Apache Spark-Pool in der Liste aus, und geben Sie einen Namen an.
    1. Diese Liste gibt Aufschluss über die verfügbaren Synapse Spark-Pools, die an Ihre Computeressource angefügt werden können.
    2. Informationen zum Erstellen eines neuen Synapse Spark-Pools finden Sie unter Erstellen eines Apache Spark-Pools mit Synapse Studio.
  7. Wählen Sie Attach selected (Ausgewählte anfügen) aus.

Anfügen eines Pools mit dem Python SDK

Sie können einen Apache Spark-Pool auch mithilfe des Python SDK anfügen.

Mit dem unten genannten Code werden die folgenden Schritte ausgeführt:

  1. Konfiguration von SynapseCompute mit

    1. dem LinkedService, linked_service, den Sie im vorherigen Schritt erstellt oder abgerufen haben.
    2. dem Typ des Computeziels, das Sie anfügen möchten: SynapseSpark
    3. dem Namen des Apache Spark-Pools. Dieser muss einem vorhandenen Apache Spark-Pool entsprechen, der sich in Ihrem Azure Synapse Analytics-Arbeitsbereich befindet.
  2. Erstellen eines Machine Learning-ComputeTarget durch Übergabe

    1. des Machine Learning-Arbeitsbereichs, den Sie verwenden möchten: ws
    2. des Namens, mit dem Sie im Azure Machine Learning-Arbeitsbereich auf die Computeressource verweisen möchten
    3. der Anfügekonfiguration (attach_configuration), die Sie beim Konfigurieren der Synapse-Computeressource angegeben haben
      1. Der Aufruf von „ComputeTarget.attach()“ ist asynchron, daher wird das Beispiel blockiert, bis der Aufruf abgeschlossen ist.
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()

Überprüfen Sie, ob der Apache Spark-Pool angefügt wurde.

ws.compute_targets['Synapse Spark pool alias']

Nächste Schritte