Freigeben über


Verwalten von Apache Spark-Bibliotheken in Microsoft Fabric

Eine Bibliothek ist ein wiederverwendbares Codepaket , z. B. ein Python-Paket aus PyPI, ein R-Paket aus CRAN oder ein Java JAR, das Sie in Ihre Notizbücher und Spark-Auftragsdefinitionen importieren können, um Funktionen hinzuzufügen, ohne sie von Grund auf neu zu schreiben. Microsoft Fabric bietet mehrere Mechanismen für die Verwaltung und Verwendung von Bibliotheken.

  • Integrierte Bibliotheken: Jede Fabric Spark-Runtime bietet eine Vielzahl beliebter vorinstallierter Bibliotheken. Die vollständige Liste integrierter Bibliotheken finden Sie unter Fabric Spark-Runtime.
  • Öffentliche Bibliothek: Öffentliche Bibliotheken stammen aus Repositorys wie PyPI und Conda, die derzeit unterstützt werden.
  • Benutzerdefinierte Bibliotheken: Benutzerdefinierte Bibliotheken beziehen sich auf Code, der von Ihnen oder Ihrer Organisation erstellt wurde. Fabric unterstützt sie bei den Formaten .whl, .jar und .tar.gz. Fabric unterstützt TAR.GZ-Dateien nur für die R-Language. Verwenden Sie für benutzerdefinierte Python-Bibliotheken das Format WHL.

Zusammenfassung der bewährten Methoden für die Bibliotheksverwaltung

In den folgenden Szenarien werden bewährte Methoden bei der Verwendung von Bibliotheken in Microsoft Fabric beschrieben.

Szenario 1: Durch Administrator*innen festgelegte Standardbibliotheken für den Arbeitsbereich

Um Standardbibliotheken festzulegen, müssen Sie der Administrator bzw. die Administratorin des Arbeitsbereichs sein. Als Administrator können Sie diese Aufgaben ausführen:

  1. Eine neue Umgebung erstellen
  2. Installieren Sie die erforderlichen Bibliotheken in der Umgebung
  3. Anfügen dieser Umgebung als Arbeitsbereichsstandard

Wenn Ihre Notebooks und Spark-Auftragsdefinitionen an die Arbeitsbereichseinstellungen angefügt sind, starten sie Sitzungen mit den Bibliotheken, die in der Standardumgebung des Arbeitsbereichs installiert sind.

Szenario 2: Beibehalten von Bibliotheksspezifikationen für mindestens ein Codeelement

Wenn Sie allgemeine Bibliotheken für verschiedene Codeelemente haben und diese nicht häufig aktualisieren müssen, installieren Sie die Bibliotheken in einer Umgebung , und fügen Sie sie an die Codeelemente an.

Die Veröffentlichung dauert je nach Komplexität der Bibliotheken 5 bis 15 Minuten. Während dieses Prozesses löst das System potenzielle Konflikte und lädt erforderliche Abhängigkeiten herunter.

Der Vorteil dieses Ansatzes besteht darin, dass erfolgreich installierte Bibliotheken garantiert verfügbar sind, wenn eine Spark-Sitzung mit der angefügten Umgebung beginnt. Es spart den Aufwand, gemeinsame Bibliotheken für Ihre Projekte aufrechtzuerhalten und wird aufgrund seiner Stabilität für Pipelineszenarien empfohlen.

Szenario 3: Inlineinstallation in interaktiver Ausführung

Wenn Sie Code interaktiv in einem Notizbuch schreiben, ist die Inlineinstallation der beste Ansatz zum Hinzufügen von PyPI- oder Conda-Bibliotheken oder zum Überprüfen von benutzerdefinierten Bibliotheken für die einmalige Verwendung. Inlinebefehle stellen eine Bibliothek nur in der aktuellen Spark-Sitzung zur Verfügung – sie ermöglichen die schnelle Installation, aber die installierte Bibliothek wird nicht über Sitzungen hinweg beibehalten.

Da %pip install unterschiedliche Abhängigkeitsstrukturen von Ausführung zu Ausführung generiert werden können, was zu Bibliothekskonflikten führen kann, werden Inlinebefehle in Pipelineausführungen standardmäßig deaktiviert und werden für Pipelines nicht empfohlen.

Zusammenfassung der unterstützten Bibliothekstypen

Bibliothekstyp Verwaltung von Umgebungsbibliotheken Inline-Installation
Python: öffentlich (PyPI und Conda) Unterstützt Unterstützt
Python Custom (.whl) Unterstützt Unterstützt
R: öffentlich (CRAN) Nicht unterstützt Unterstützt
R benutzerdefinierte Version (.tar.gz) Unterstützt als benutzerdefinierte Bibliothek Unterstützt
JAR Unterstützt als benutzerdefinierte Bibliothek Unterstützt

Inline-Installation

Mithilfe von Inlinebefehlen können Sie Bibliotheken innerhalb einzelner Notizbuchsitzungen verwalten.

Inlineinstallation für Python

Das System startet den Python-Interpreter neu, um Bibliotheksänderungen anzuwenden. Alle vor dem Ausführen der Befehlszelle definierten Variablen gehen verloren. Platzieren Sie alle Befehle zum Hinzufügen, Löschen oder Aktualisieren von Python-Paketen am Anfang Ihres Notizbuchs.

Inlinebefehle zum Verwalten von Python-Bibliotheken sind in der Notizbuchpipeline standardmäßig deaktiviert. Um %pip install für eine Pipeline zu aktivieren, fügen Sie _inlineInstallationEnabled als booleschen Parameter hinzu, der in den Notizbuchaktivitätsparametern auf True festgelegt ist.

Screenshot der Konfiguration zur Aktivierung von pip install für die Ausführung der Notizbuchpipeline.

Hinweis

Der %pip install Befehl kann zu inkonsistenten Ergebnissen von einem Durchlauf zum nächsten führen. Installieren Sie Bibliotheken in einer Umgebung, und verwenden Sie stattdessen die Umgebung in einer Pipeline. Der %pip install Befehl wird im Modus "Hohe Parallelität" nicht unterstützt. In Notizbuch-Referenzläufen werden Inline-Befehle zum Verwalten von Python-Bibliotheken nicht unterstützt. Entfernen Sie diese Inlinebefehle aus dem referenzierten Notizbuch, um die korrekte Ausführung sicherzustellen.

Verwenden Sie %pip anstelle von !pip. Der !pip Befehl ist ein integrierter IPython-Shellbefehl mit den folgenden Einschränkungen:

  • !pip installiert ein Paket nur auf dem Treiberknoten, nicht auf Executorknoten.
  • Pakete, die über !pip installiert werden, berücksichtigen keine Konflikte mit integrierten Paketen oder mit Paketen, die bereits in einem Notizbuch importiert sind.

%pip behandelt diese Szenarien. Durch %pip installierte Bibliotheken sind sowohl auf Treiber- als auch auf Executorknoten verfügbar und wirken auch dann, wenn sie bereits importiert wurden.

Tipp

Der %conda install-Befehl dauert in der Regel länger als der %pip install-Befehl zum Installieren neuer Python-Bibliotheken. Er überprüft die vollständigen Abhängigkeiten und löst Konflikte.

Verwenden Sie %conda install für mehr Zuverlässigkeit und Stabilität. Verwenden Sie %pip install , wenn Sie sicher sind, dass die zu installierende Bibliothek nicht mit den vorinstallierten Bibliotheken in der Laufzeitumgebung in Konflikt steht.

Für alle verfügbaren Python-Inlinebefehle und -Erklärungen siehe %pip-Befehle und %conda-Befehle.

Verwalten öffentlicher Python-Bibliotheken über die Inlineinstallation

In diesem Beispiel wird gezeigt, wie Inlinebefehle zum Verwalten von Bibliotheken verwendet werden. Angenommen, Sie möchten altair, eine leistungsstarke Visualisierungsbibliothek für Python, für eine einmalige Datensuche verwenden, und die Bibliothek wird nicht in Ihrem Arbeitsbereich installiert. Das folgende Beispiel verwendet conda-Befehle, um die Schritte zu veranschaulichen.

Sie können Inlinebefehle verwenden, um Altair für Ihre Notebooksitzung zu aktivieren, ohne dass sich dies auf andere Sitzungen des Notebooks oder andere Elemente auswirkt.

  1. Führen Sie die folgenden Befehle in einer Notebook-Code-Zelle aus. Der erste Befehl installiert die Altair-Bibliothek. Installieren Sie außerdem vega_datasets, das ein semantisches Modell enthält, mit dem Sie visualisieren können.

    %conda install altair          # install latest version through conda command
    %conda install vega_datasets   # install latest version through conda command
    

    Die Zellenausgabe gibt das Ergebnis der Installation an.

  2. Importieren Sie das Paket und das Semantikmodell, indem Sie die folgenden Codes in einer anderen Notebookzelle ausführen.

    import altair as alt
    from vega_datasets import data
    
  3. Jetzt können Sie mit der sitzungsspezifischen Altair-Bibliothek herumexperimentieren.

    # load a simple dataset as a pandas DataFrame
    cars = data.cars()
    alt.Chart(cars).mark_point().encode(
    x='Horsepower',
    y='Miles_per_Gallon',
    color='Origin',
    ).interactive()
    

Verwalten benutzerdefinierter Python-Bibliotheken über die Inlineinstallation

Sie können Ihre benutzerdefinierten Python-Bibliotheken in den Ressourcenordner Ihres Notebooks oder in die angefügte Umgebung hochladen. Der Ressourcenordner ist ein integriertes Dateisystem, das von jedem Notizbuch und jeder Umgebung bereitgestellt wird. Weitere Details finden Sie in den Notebookressourcen. Nachdem Sie eine Bibliothek hochgeladen haben, können Sie sie in eine Codezelle ziehen und ablegen, um den Installationsbefehl automatisch zu generieren. Alternativ können Sie den folgenden Befehl ausführen:

# install the .whl through pip command from the notebook built-in folder
%pip install "builtin/wheel_file_name.whl"             

R-Inline-Installation

Zum Verwalten von R-Bibliotheken unterstützt Fabric die Befehle install.packages(), remove.packages() und devtools::. Für alle verfügbaren R-Inlinebefehle und -Erläuterungen siehe Befehl install.packagesund dem Befehl remove.package.

Verwalten öffentlicher R-Bibliotheken über die Inlineinstallation

Im folgenden Beispiel werden die Schritte zum Installieren einer öffentlichen R-Bibliothek durchlaufen.

So installieren Sie eine R-Feedbibliothek

  1. Wechseln Sie die Arbeitssprache im Notebook-Menüband auf SparkR (R).

  2. Führen Sie den folgenden Befehl in einer Notebookzelle aus, um die Bibliothek caesar zu installieren.

    install.packages("caesar")
    
  3. Nun können Sie die sessionspezifische caesar-Bibliothek mit einem Spark-Job ausprobieren.

    library(SparkR)
    sparkR.session()
    
    hello <- function(x) {
    library(caesar)
    caesar(x)
    }
    spark.lapply(c("hello world", "good morning", "good evening"), hello)
    

Verwaltung von JAR-Bibliotheken über Inline-Installationen

Sie können .jar-Dateien zu Notizbuchsitzungen mit dem folgenden Befehl hinzufügen.

%%configure -f
{
    "conf": {
        "spark.jars": "abfss://<<Lakehouse prefix>>.dfs.fabric.microsoft.com/<<path to JAR file>>/<<JAR file name>>.jar",
    }
}        

In der vorhergehenden Codezelle wird lakehouse storage als Beispiel verwendet. Im Notizbuch-Explorer können Sie den vollständigen ABFS-Pfad der Datei kopieren und im Code ersetzen. Screenshot: Menübefehle zum Abrufen des ABFS-Pfads