Verwalten von Apache Spark-Bibliotheken in Microsoft Fabric

Bei einer Bibliothek handelt es sich um vordefinierten Code, den Entwickler*innen importieren können, um zusätzliche Funktionen bereitzustellen. Bibliotheken verringern den Zeit- und Arbeitsaufwand für Sie, da sie Code nicht von Grund auf neu schreiben müssen, um allgemeine Aufgaben auszuführen. Importieren Sie stattdessen die Bibliothek und deren Funktionen und Klassen verwenden, um die gewünschten Funktionen zu erhalten. 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.

Bibliotheksverwaltung in der Arbeitsbereichseinstellung

Wichtig

Die Bibliotheksverwaltung in der Arbeitsbereichseinstellung wird nicht mehr unterstützt. Zum Migrieren von Arbeitsbereichbibliotheken und Spark-Eigenschaften zu einer Standardumgebung finden Sie unter Migrieren der Arbeitsbereichsbibliotheken und Spark-Eigenschaften.

Zusammenfassung der bewährten Methoden für die Bibliotheksverwaltung

In den folgenden Szenarien werden bewährte Methoden 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

Die Notebooks und Spark-Auftragsdefinitionen im Arbeitsbereich sind den Arbeitsbereichseinstellungen zugeordnet. Sie starten Sitzungen mit den Bibliotheken, die in der Standardumgebung des Arbeitsbereichs installiert sind.

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

Wenn Sie Bibliotheksspezifikationen beibehalten wollen, installieren Sie die Bibliotheken in einer Umgebung und fügen Sie sie an die Codeelemente an.

Ein Vorteil dieser Vorgehensweise ist, dass dadurch der Aufwand vermieden wird, den Codes auszuführen, der dauerhaft allgemeine Bibliotheken benötigt. Nach erfolgreicher Installation in der Umgebung sind die Bibliotheken in allen Spark-Sitzungen wirksam, wenn die Umgebung angefügt ist.

Ein weiterer Vorteil besteht darin, dass der Ansatz eine Granularität von Bibliothekskonfiguration unterstützt, die niedriger als die Arbeitsbereichsebene ist. Eine einzelne Umgebung kann an mehrere Codeartefakte angefügt werden. Wenn ein Arbeitsbereich eine Teilmenge von Notebooks oder Spark-Auftragsdefinitionen enthält, für die die gleichen Bibliotheken erforderlich sind, fügen Sie sie an die gleiche Umgebung an. Ein*e Administrator*innen, Mitglieder oder Mitwirkende des Arbeitsbereichs können die Umgebung erstellen, bearbeiten und anfügen.

Szenario 3: Inlineinstallation in interaktiver Ausführung

Wenn Sie an der einmaligen Verwendung innerhalb eines interaktiven Notebooks einer nicht installierten Bibliothek interessiert sind, ist die Inline-Installation die bequemste Option. Mithilfe von Inlinebefehlen in Fabric können Sie die Bibliothek in der aktuellen Spark-Sitzung des Notebooks aktivieren. Die Bibliothek wird nicht in verschiedenen Sitzungen beibehalten.

Benutzer*innen, die zum Ausführen des Notebooks berechtigt sind, können andere Bibliotheken in der Spark-Sitzung installieren.

Zusammenfassung der unterstützten Bibliothekstypen

Bibliothekstyp Umgebungsbasierte Bibliotheksverwaltung 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 benutzerdefiniert (TAR.GZ) Unterstützt Unterstützt
JAR Unterstützt als benutzerdefinierte Bibliothek Nicht unterstützt

Wichtig

Derzeit gelten Einschränkungen für die JAR-Bibliothek.

  • Für Scala-Benutzer kann die .jar-Datei erfolgreich in einer Umgebung installiert werden, aber sie sit nicht wirksam für Ihre Spark/Scala-Sitzungen. Die Installation setzt die integrierte Bibliothek mit einer anderen Bibliothek außer Kraft. Die neue .jar funktioniert in den Sitzungen.
  • Für Python-Benutzer werden derzeit alle .jar-Dateien in einer Umgebung nicht unterstützt. Sie können erfolgreich in einer Umgebung installiert werden, sind aber in PySpark-Sitzungen nicht effektiv.
  • Sie können stattdessen die Datei .jar auf der Notebook-Sitzungsebene installiert werden.

Inline-Installation

Inlinebefehle unterstützen Python-Bibliotheken und R-Bibliotheken.

Inlineinstallation für Python

Der Python-Interpreter startet neu, um die Änderung der Bibliotheken anzuwenden. Alle vor dem Ausführen der Befehlszelle definierten Variablen gehen verloren. Es wird dringend empfohlen, dass Sie alle Befehle zum Hinzufügen, Löschen oder Aktualisieren von Python-Paketen am Anfang Ihres Notebooks platzieren.

Wir empfehlen %pip anstelle von !pip. !pip ist ein integrierter IPython-Shellbefehl mit den folgenden Einschränkungen:

  • !pip installiert nur ein Paket auf dem Treiberknoten, nicht auf Executor-Knoten.
  • Pakete, die über !pip installiert werden, wirken sich nicht auf Konflikte mit integrierten Paketen aus oder auf Pakete, die bereits in ein Notebook importiert wurden.

%pip handhabt diese Szenarien jedoch. Bibliotheken, die über %pip installiert werden, sind sowohl auf Treiber- als auch auf Executorknoten verfügbar und sind auch dann wirksam, wenn die Bibliothek bereits importiert wurde.

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.

Sie sollten %conda install install verwenden, um mehr Zuverlässigkeit und Stabilität zu erzielen. Sie können %pip install install verwenden, wenn Sie sicher sind, dass die Bibliothek, die Sie installieren möchten, nicht mit den vorinstallierten Bibliotheken in der Runtime-Umgebung 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 sehen Sie, wie Sie Inlinebefehle verwenden, um Bibliotheken zu verwalten. Angenommen, Sie möchten Altair, eine leistungsstarke Visualisierungsbibliothek für Python, für eine einmalige Datenuntersuchung verwenden. Nehmen wir weiter an, die Bibliothek sei 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 herumspielen.

    # 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 Ordner Datei des Lakehouse hochladen, das an Ihr Notebook angefügt ist. Navigieren Sie zu Ihrem Lakehouse, wählen Sie das Symbol im Ordner Datei aus, und laden Sie die benutzerdefinierte Bibliothek hoch.

Nach Ihrem Hochladen können Sie den folgenden Befehl verwenden, um die benutzerdefinierte Bibliothek in Ihrer Notebooksitzung zu installieren.

# install the .whl through pip command
%pip install /lakehouse/default/Files/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 sitzungsspezifische caesar-Bibliothek mit einem Spark-Auftrag ausprobieren.

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

Verwalten von Jar-Bibliotheken über die Inlineinstallation

Die .jar-Dateien werden in Notebook-Sitzungen mit folgendem Befehl unterstützt.

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

Die Codezelle verwendet den Speicher von Lakehouse als Beispiel. Im Notebook-Explorer können Sie den vollständigen ABFS-Pfad kopieren und im Code ersetzen. Screenshot des Abrufens des ABFS-Pfads.