Verwalten von Bibliotheken für Apache Spark in Azure Synapse Analytics

Bibliotheken stellen wiederverwendbaren Code bereit, den Sie möglicherweise in Ihre Programme oder Projekte für Apache Spark in Azure Synapse Analytics (Azure Synapse Spark) einfügen möchten.

Möglicherweise müssen Sie aus verschiedenen Gründen Ihre serverlose Apache Spark-Poolumgebung aktualisieren. Beispielsweise stellen Sie ggf. Folgendes fest:

  • Für eine Ihrer Kernabhängigkeiten wurde eine neue Version veröffentlicht.
  • Sie benötigen ein zusätzliches Paket zum Trainieren Ihres Machine Learning-Modells oder zum Aufbereiten Ihrer Daten.
  • Ein besseres Paket ist verfügbar, und Sie benötigen das ältere Paket nicht mehr.
  • Ihr Team hat ein benutzerdefiniertes Paket erstellt, das Sie in Ihrem Apache Spark-Pool zur Verfügung stellen müssen.

Wenn Sie Code eines Drittanbieters oder lokal erstellten Code für Ihre Anwendungen verfügbar machen möchten, installieren Sie eine Bibliothek in einem Ihrer serverlosen Apache Spark-Pools oder in einer Notebooksitzung.

Übersicht über die Paketebenen

In Azure Synapse Analytics werden drei Paketebenen installiert:

  • Standard: Die Standardpakete enthalten eine vollständige Anaconda-Installation sowie zusätzlich häufig verwendete Bibliotheken. Eine vollständige Liste der Bibliotheken finden Sie unter Apache Spark-Versionsunterstützung.

    Beim Start einer Spark-Instanz werden diese Bibliotheken automatisch eingebunden. Sie können weitere Pakete auf den anderen Ebenen hinzufügen.

  • Spark-Pool: Alle ausgeführten Artefakte können Pakete auf Spark-Poolebene verwenden. Beispielsweise können Sie Notebook- und Spark-Auftragsdefinitionen an entsprechende Spark-Pools anfügen.

    Sie können benutzerdefinierte Bibliotheken und eine bestimmte Version einer Open-Source-Bibliothek hochladen, die Sie in Ihrem Azure Synapse Analytics-Arbeitsbereich verwenden möchten. Die Pakete für den Arbeitsbereich können in Ihren Spark-Pools installiert werden.

  • Sitzung: Bei einer Installation auf Sitzungsebene wird eine Umgebung für eine bestimmte Notebooksitzung erstellt. Änderungen an Bibliotheken auf Sitzungsebene werden zwischen Sitzungen nicht beibehalten.

Hinweis

  • Die Verwaltung von Bibliotheken auf Poolebene kann je nach Größe der Pakete und der Komplexität der erforderlichen Abhängigkeiten einige Zeit in Anspruch nehmen. Die maximale Aktualisierungszeit ist auf 50 Minuten festgelegt. Ihr Bibliotheksverwaltungsauftrag auf Poolebene wird automatisch abgebrochen, wenn er die Obergrenze von 50 Minuten überschreitet. Empfohlen wird die Installation auf Sitzungsebene bei experimentellen und schnellen iterativen Szenarien.
  • Die Bibliotheksverwaltung auf Poolebene erzeugt eine stabile Abhängigkeit für die Ausführung Ihrer Notebooks- und Spark-Auftragsdefinitionen. Für die Pipelineausführungen wird dringend empfohlen, die Bibliothek in Ihrem Spark-Pool zu installieren.
  • Die Verwaltung der Bibliothek auf Sitzungsebene kann Ihnen bei der schnellen Iteration oder beim Umgang mit den häufigen Änderungen der Bibliothek helfen. Die Stabilität der Installation auf Sitzungsebene wird jedoch nicht garantiert. Außerdem sind Inlinebefehle wie %pip und %conda in der Pipelineausführung deaktiviert. Die Verwaltung der Bibliothek in der Notebook-Sitzung wird während der Entwicklungsphase empfohlen.

Verwalten von Arbeitsbereichspaketen

Wenn Ihr Team benutzerdefinierte Anwendungen oder Modelle entwickelt, entwickeln Sie möglicherweise verschiedene Codeartefakte, wie .whl-, .jar-, oder .tar.gz-Dateien, um Ihren Code zu paketieren.

Wichtig

  • tar.gz wird nur für die Sprache R unterstützt. Verwenden Sie .whl für benutzerdefinierte Python-Paketdateien.

In Azure Synapse können Arbeitsbereichspakete benutzerdefinierte oder private WHL- oder JAR-Dateien sein. Sie können diese Pakete in Ihren Arbeitsbereich hochladen und später einem bestimmten serverlosen Apache Spark-Pool zuweisen. Nach ihrer Zuweisung werden diese Arbeitsbereichspakete automatisch in allen Spark-Poolsitzungen installiert.

Weitere Informationen zum Verwalten von Arbeitsbereichsbibliotheken finden Sie unter Verwalten von Arbeitsbereichspaketen.

Verwalten von Poolpaketen

In einigen Fällen möchten Sie möglicherweise die Pakete standardisieren, die für einen bestimmten Apache Spark-Pool verwendet werden. Diese Standardisierung kann nützlich sein, wenn dieselben Pakete häufig von mehreren Personen Ihres Teams installiert werden.

Mithilfe der Verwaltungsfunktionen des Azure Synapse Analytics-Pools können Sie die Standardbibliotheken konfigurieren, die in einem serverlosen Apache Spark-Pool installiert werden sollen. Diese Bibliotheken werden zusätzlich zur Basisruntime installiert.

Bei Python nutzen Azure Synapse Spark-Pools Conda, um Python-Paketabhängigkeiten zu installieren und zu verwalten. Sie können die Python-Bibliotheken auf Poolebene angeben, indem Sie eine requirements.txt- oder environment.yml-Datei bereitstellen. Diese Umgebungskonfigurationsdatei wird jedes Mal verwendet, wenn eine Spark-Instanz aus diesem Spark-Pool erstellt wird. Sie können Ihren Pools auch die Arbeitsbereichspakete anfügen.

Weitere Informationen zu diesen Funktionen finden Sie unter Verwalten von Spark-Poolpaketen.

Wichtig

  • Wenn das Paket, das Sie installieren, groß ist oder seine Installation lange dauert, wirkt sich dies auf die Startdauer der Spark-Instanz aus.
  • Das Ändern der Version von PySpark, Python, Scala/Java, .NET oder Spark wird nicht unterstützt.

Verwalten von Abhängigkeiten für DEP-fähige Azure Synapse Spark-Pools

Hinweis

Das Installieren von Paketen aus einem öffentlichen Repository wird in DEP-fähigen Arbeitsbereichen nicht unterstützt. Laden Sie stattdessen alle Ihre Abhängigkeiten als Arbeitsbereichsbibliotheken hoch, und installieren Sie sie in Ihrem Spark-Pool.

Wenn Sie Probleme beim Ermitteln der erforderlichen Abhängigkeiten haben, führen Sie die folgenden Schritte aus:

  1. Führen Sie das folgende Skript aus, um eine lokale Python-Umgebung einzurichten, die mit der Azure Synapse Spark-Umgebung identisch ist. Dieses Skript erfordert eine YAML-Datei, die eine Liste aller Bibliotheken enthält, die in der Python-Standardumgebung für Azure Synapse Spark enthalten sind. Sie finden diese YAML-Datei in der Dokumentation für bestimmte Runtimeversionen, z. B. Apache Spark 3.2 (Supportende angekündigt) und Apache Spark 3.3 (GA).

       # One-time Azure Synapse Python setup
       wget Synapse-Python38-CPU.yml
       sudo bash Miniforge3-Linux-x86_64.sh -b -p /usr/lib/miniforge3
       export PATH="/usr/lib/miniforge3/bin:$PATH"
       sudo apt-get -yq install gcc g++
       conda env create -n synapse-env -f Synapse-Python38-CPU.yml 
       source activate synapse-env
    
  2. Führen Sie das folgende Skript aus, um die erforderlichen Abhängigkeiten zu ermitteln. Mit dem Skript können Sie Ihre Datei requirements.txt übergeben, die alle Pakete und Versionen enthält, die Sie im Spark 3.1- oder Spark 3.2-Pool installieren möchten. Es gibt die Namen der neuen Wheel-Dateien/-Abhängigkeiten aus, die als Eingaben für Ihre Bibliotheksanforderungen erforderlich sind.

       # Command to list wheels needed for your input libraries.
       # This command will list only new dependencies that are
       # not already part of the built-in Azure Synapse environment.
       pip install -r <input-user-req.txt> > pip_output.txt
       cat pip_output.txt | grep "Using cached *"
    

    Hinweis

    Beachten Sie, dass dabei nur Abhängigkeiten aufgeführt werden, die nicht bereits standardmäßig im Spark-Pool vorhanden sind.

Verwalten von sitzungsbezogenen Paketen

Bei einer interaktiven Datenanalyse oder beim maschinellen Lernen probieren Sie ggf. neuere Pakete aus, oder Sie benötigen Pakete, die derzeit nicht in Ihrem Apache Spark-Pool verfügbar sind. Anstatt die Poolkonfiguration zu aktualisieren, können Sie jetzt sitzungsbezogene Pakete verwenden, um Sitzungsabhängigkeiten hinzuzufügen, zu verwalten und zu aktualisieren.

Mit sitzungsbezogenen Paketen können Benutzer zu Beginn ihrer Sitzung Paketabhängigkeiten definieren. Wenn Sie ein sitzungsbezogenes Paket installieren, kann nur die aktuelle Sitzung auf die angegebenen Pakete zugreifen. Daher wirken sich diese sitzungsbezogenen Pakete nicht auf andere Sitzungen oder Aufträge aus, die denselben Apache Spark-Pool verwenden. Außerdem werden diese Bibliotheken zusätzlich zu den Paketen der Basisruntime und der Poolebene installiert.

Weitere Informationen zum Verwalten sitzungsbezogener Pakete finden Sie in den folgenden Artikeln:

  • Python-Sitzungspakete: Stellen Sie zu Beginn einer Sitzung die Conda-Datei environment.yml bereit, um weitere Python-Pakete aus beliebten Repositorys zu installieren. Zudem können Sie die Befehle %pip und %conda verwenden, um Bibliotheken in den Notebook-Codezellen zu verwalten.

    Wichtig

    Verwenden Sie nicht%%sh, um Bibliotheken mit Pip oder Conda zu testen und zu installieren. Das Verhalten ist nicht identisch mit %pip oder %conda.

  • Scala/Java-Sitzungspakete: Geben Sie zu Beginn der Sitzung mithilfe von %%configure eine Liste mit JAR-Dateien an, die installiert werden sollen.

  • R-Sitzungspakete: In Ihrer Sitzung können Sie Pakete über alle Knoten in Ihrem Spark-Pool mit install.packages oder devtools installieren.

Automatisieren des Bibliotheksverwaltungsprozesses über Azure PowerShell-Cmdlets und REST-APIs

Wenn Ihr Team die Bibliotheken ohne die Paketverwaltungsoberflächen verwalten möchte, haben Sie die Möglichkeit, die Pakete im Arbeitsbereich und die Paketaktualisierungen auf Poolebene über Azure PowerShell-Cmdlets oder REST-APIs für Azure Synapse Analytics zu verwalten.

Weitere Informationen finden Sie in den folgenden Artikeln:

Nächste Schritte