Freigeben über


Verwenden der Livy-API zum Senden und Ausführen von Spark-Sitzungsaufträgen mit Benutzeranmeldeinformationen

Gilt für:✅ Datenengineering und Datenwissenschaft in Microsoft Fabric

Erstellen Sie zum Einstieg mit der Livy-API für Fabric Data Engineering zunächst ein Lakehouse. Authentifizieren Sie sich mit einem Microsoft Entra-Token, entdecken Sie den Livy-API-Endpunkt, übermitteln Sie Batch- oder Sitzungsaufträge von einem Remoteclient an Fabric Spark-Compute und überwachen Sie die Ergebnisse.

Von Bedeutung

Dieses Feature befindet sich in der Vorschauphase.

Voraussetzungen

Auswählen eines REST-API-Clients

Sie können verschiedene Programmiersprachen oder Clients mit Benutzeroberflächen verwenden, um mit REST-API-Endpunkten zu interagieren. In diesem Artikel verwenden wir Visual Studio Code-. Visual Studio Code muss mit Jupyter Notebook, PySparkund der Microsoft Authentication Library (MSAL) für Python konfiguriert werden.

So autorisieren Sie die Livy-API-Anforderungen mit einem Entra SPN-Token

Um mit Fabric-APIs einschließlich der Livy-API zu arbeiten, müssen Sie zuerst eine Microsoft Entra-Anwendung erstellen und einen geheimen Schlüssel erstellen und diesen geheimen Schlüssel in Ihrem Code verwenden. Ihre Anwendung muss registriert und entsprechend konfiguriert werden, um API-Aufrufe für Fabric auszuführen. Weitere Informationen finden Sie unter Hinzufügen und Verwalten von Anwendungsanmeldeinformationen in der Microsoft Entra-ID

Erstellen Sie nach dem Erstellen der App-Registrierung einen geheimen Clientschlüssel.

Screenshot der Entra-App-Registrierung und Hinzufügen eines geheimen Clientschlüssels.

  1. Achten Sie beim Erstellen des geheimen Clientschlüssels darauf, den Wert zu kopieren. Sie benötigen dies später im Code, und der geheime Schlüssel kann nicht mehr angezeigt werden. Zusätzlich zum geheimen Schlüssel in Ihrem Code benötigen Sie außerdem die Anwendungs-ID (Client-ID) und das Verzeichnis (Mandanten-ID).

  2. Als Nächstes müssen wir das Client-Geheimnis zu unserem Arbeitsbereich hinzufügen.

    Screenshot, der die Verwaltung von Zugriffsoptionen in den Lakehouse-Einstellungen zeigt.

  3. Suchen Sie nach dem geheimen Entra-Clientschlüssel, und fügen Sie diesen geheimen Schlüssel dem Arbeitsbereich hinzu, und stellen Sie sicher, dass der neu hinzugefügte geheime Schlüssel über Administratorberechtigungen verfügt.

    Screenshot: Hinzufügen des neuen SPN-Dienstprinzipals zum Arbeitsbereich

So autorisieren Sie die Livy-API-Anforderungen mit einem Entra-App-Token

Für die Verwendung von Fabric-APIs (einschließlich der Livy-API) müssen Sie zunächst eine Microsoft Entra-Anwendung erstellen und ein Token abrufen. Ihre Anwendung muss registriert und entsprechend konfiguriert werden, um API-Aufrufe für Fabric auszuführen. Weitere Informationen finden Sie unter Registrieren einer Anwendung bei Microsoft Identity Platform.

Für das Ausführen von Livy-Aufträgen sind zahlreiche Microsoft Entra-Bereichsbeschränkungen erforderlich. In diesem Beispiel wird einfacher Spark-Code + Speicherzugriff + SQL verwendet:

  • Code.AccessAzureDataExplorer.All

  • Code.AccessAzureDataLake.All

  • Code.AccessAzureKeyvault.All

  • Code.AccessFabric.All

  • Code.AccessStorage.All

  • Item.ReadWrite.All

  • Lakehouse.Execute.All

  • Arbeitsbereich.ReadWrite.All

    Screenshot der Livy-API-Berechtigungen im Microsoft Entra Admin Center

Hinweis

Während der öffentlichen Vorschau ändern sich diese Bereiche möglicherweise, wenn wir einige genauere Bereiche hinzufügen. Wenn diese Bereichsänderungen vorgenommen werden, kann Ihre Livy-App ausfallen. Überprüfen Sie diese Liste, da sie mit den zusätzlichen Bereichen aktualisiert wird.

Einige Kunden benötigen differenziertere Berechtigungen als in der obigen Liste. Sie können „Item.ReadWrite.All“ entfernen und durch diese differenzierteren Berechtigungen im Geltungsbereich ersetzen:

  • Code.AccessAzureDataExplorer.All
  • Code.AccessAzureDataLake.All
  • Code.AccessAzureKeyvault.All
  • Code.AccessFabric.All
  • Code.AccessStorage.All
  • Lakehouse.Execute.All
  • Lakehouse.ReadWrite.All
  • Arbeitsbereich.ReadWrite.All
  • Notebook.ReadWrite.All
  • SparkJobDefinition.ReadWrite.All
  • MLModel.ReadWrite.All
  • MLExperiment.ReadWrite.All
  • Dataset.ReadWrite.All

Wenn Sie Ihre Anwendung registrieren, benötigen Sie sowohl die Anwendungs-ID (Client-ID) als auch die Verzeichnis-ID (Mandant).

Screenshot der Übersicht über die Livy-API-App im Microsoft Entra Admin Center

Der authentifizierte Benutzende, der die Livy-API aufruft, muss Mitglied des Arbeitsbereichs sein, in dem sich sowohl die API- als auch die Datenquellenelemente befinden, und über die Rolle „Mitwirkender“ verfügen. Weitere Informationen finden Sie unter Gewähren des Zugriffs auf Arbeitsbereiche für Benutzer.

Ermitteln des Fabric Livy-API-Endpunkts

Für den Zugriff auf den Livy-Endpunkt ist ein Lakehouse-Artefakt erforderlich. Nachdem das Lakehouse erstellt wurde, finden Sie den Livy-API-Endpunkt im Einstellungsbereich.

Screenshot mit Livy-API-Endpunkten in den Lakehouse-Einstellungen

Der Endpunkt der Livy-API weist folgendes Muster auf:

https://api.fabric.microsoft.com/v1/workspaces/ <ws_id>/lakehouses/<lakehouse_id>/livyapi/versions/2023-12-01/

An die URL wird je nach Ihrer Auswahl entweder <sessions> oder <batches> angefügt.

Laden Sie die Dateien der Livy-API Swagger herunter.

Die vollständigen Swagger-Dateien für die Livy-API sind hier verfügbar.

Übermitteln von Livy-API-Aufträgen

Nachdem die Einrichtung der Livy-API abgeschlossen ist, können Sie entweder Batch- oder Sitzungsaufträge übermitteln.

Integration in Fabric-Umgebungen

Diese Livy-API-Sitzung wird standardmäßig für den Standardstartpool für den Arbeitsbereich ausgeführt. Alternativ können Sie Fabric-Umgebungen zum Erstellen, Konfigurieren und Verwenden einer Umgebung in Microsoft Fabric verwenden, um den Spark-Pool anzupassen, den die Livy-API-Sitzung für diese Spark-Aufträge verwendet.

Um eine Fabric-Umgebung in einer Livy Spark-Sitzung zu verwenden, aktualisieren Sie einfach die JSON so, dass sie diese Nutzlast enthält.

create_livy_session = requests.post(livy_base_url, headers = headers, json={
    "conf" : {
        "spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID""}"}
    }
)

Um eine Fabric-Umgebung in einer Livy Spark-Batchsitzung zu verwenden, aktualisieren Sie einfach die JSON-Nutzlast wie unten dargestellt.

payload_data = {
"name":"livybatchdemo_with"+ newlakehouseName,
"file":"abfss://YourABFSPathToYourPayload.py", 
"conf": {
    "spark.targetLakehouse": "Fabric_LakehouseID",
    "spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID"\"}"  # remove this line to use starter pools instead of an environment, replace "EnvironmentID" with your environment ID
    }
}

Überwachen des Anforderungsverlaufs

Sie können den Überwachungshub verwenden, um frühere Livy-API-Übermittlungen anzuzeigen und mögliche Übermittlungsfehler zu debuggen.

Screenshot mit vorherigen Livy-API-Übermittlungen im Monitoring Hub.