Python-Bibliotheken im Notebook-Bereich
Mit Bibliotheken im Notebook-Bereich können Sie benutzerdefinierte Python-Umgebungen erstellen, ändern, speichern, wiederverwenden und freigeben, die für ein Notebook spezifisch sind. Wenn Sie eine Bibliothek im Notebook-Bereich installieren, haben nur das aktuelle Notebook und alle diesem Notebook zugeordneten Aufträge Zugriff auf diese Bibliothek. Andere Notebooks, die an denselben Cluster angefügt sind, sind nicht betroffen.
Bibliotheken im Notebook-Bereich werden nicht sitzungsübergreifend beibehalten. Sie müssen Bibliotheken im Notebook-Bereich zu Beginn jeder Sitzung oder immer dann neu installieren, wenn das Notebook von einem Cluster getrennt wird.
Es gibt zwei Methoden zum Installieren von Bibliotheken im Notebook-Bereich:
- Den
%pip
-Magic-Befehl in einem Notebook ausführen. Der%pip
-Befehl wird für Databricks Runtime 7.1 und höher sowie für Databricks Runtime 6.4 ML und höher unterstützt. Databricks empfiehlt die Verwendung dieses Vorgehen für neue Workloads. In diesem Artikel wird beschrieben, wie Sie diese Magic-Befehle verwenden. - Das Azure Databricks-Bibliothekshilfsprogramm verwenden. Das Bibliothekshilfsprogramm wird nur auf Databricks Runtime unterstützt, nicht auf Databricks Runtime ML oder Databricks Runtime für Genomics. Weitere Informationen finden Sie unter Bibliothekshilfsprogramm (dbutils.library).
Verwenden Sie die im Arbeitsbereich oder im Cluster installierten Bibliotheken, um Bibliotheken für alle Notebooks zu installieren, die einem Cluster zugeordnet sind.
Requirements (Anforderungen)
Bibliotheken im Notebook-Bereich, die Magic-Befehle verwenden, sind in Databricks Runtime 7.1 und höher, Databricks Runtime 7.1 ML und höher und Databricks Runtime 7.1 für Genomics und höher standardmäßig aktiviert.
Sie sind über eine Konfigurationseinstellung auch in Databricks Runtime 6.4 ML bis 7.0 ML und Databricks Runtime 6.4 für Genomics bis Databricks Runtime 7.0 für Genomics verfügbar. Legen Sie die Spark-Konfigurationspark.databricks.conda.condaMagic.enabled
auf true
fest.
In einem Cluster mit hoher Parallelität, auf dem Databricks Runtime 7.4 ML oder Databricks Runtime 7.4 für Genomics oder höher ausgeführt wird, sind Bibliotheken im Notebook-Bereich nicht mit der Tabellenzugriffssteuerung oder dem Passthrough von Anmeldeinformationen kompatibel. Alternativ können Sie das Bibliothekshilfsprogramm (dbutils.library) in einem Databricks Runtime Cluster verwenden oder ihren Cluster auf Databricks Runtime 7.5 ML oder Databricks Runtime 7.5 für Genomics oder höher aktualisieren.
Um Bibliotheken im Notebook-Bereich mit Databricks Connect verwenden zu können, müssen Sie das Bibliothekshilfsprogramm (dbutils.library) verwenden.
Treiberknoten
Die Verwendung von Bibliotheken im Notebook-Bereich kann zu mehr Datenverkehr zum Treiberknoten führen, da die Umgebung über alle Executorknoten hinweg konsistent bleibt.
Wenn Sie einen Cluster mit 10 oder mehr Knoten verwenden, empfiehlt Databricks folgende Spezifikationen als Mindestanforderung für den Treiberknoten:
- Verwenden Sie für einen CPU-Cluster mit 100 Knoten Standard_DS5_v2.
- Verwenden Sie für einen GPU-Cluster mit 10 Knoten Standard_NC12.
Verwenden Sie für größere Cluster einen größeren Treiberknoten.
Bibliotheken im Notebook-Bereich mit %pip
Wichtig
- Sie sollten alle
%pip
Befehle an den Anfang des Notebooks stellen. Der Notebookzustand wird nach jedem%pip
-Befehl zurückgesetzt, der die Umgebung ändert. Wenn Sie Python-Methoden oder -Variablen in einem Notebook erstellen und dann%pip
-Befehle in einer späteren Zelle verwenden, gehen die Methoden oder Variablen verloren. - Das Upgraden, Ändern oder Deinstallieren von Python-Kernpaketen (z. B. IPython) mit
%pip
kann dazu führen, dass einige Features nicht mehr wie erwartet funktionieren. Beispielsweise sind IPython 7.21 und höher nicht mit Databricks Runtime 8.1 und niedriger kompatibel. Wenn solche Probleme auftreten, setzen Sie die Umgebung zurück, indem Sie das Notebook trennen und erneut anfügen oder den Cluster neu starten.
Verwalten von Bibliotheken mit %pip
-Befehlen
Der %pip
-Befehl entspricht dem pip-Befehl und unterstützt dieselbe API. Die folgenden Abschnitte zeigen Beispiele für die Verwendung von %pip
-Befehlen zum Verwalten Ihrer Umgebung. Weitere Informationen zum Installieren von Python-Paketen mit pip
finden Sie in der Dokumentation zur pip-Installation und auf zugehörigen Seiten.
In diesem Abschnitt
- Installieren einer Bibliothek mit
%pip
- Installieren eines Wheel-Pakets mit
%pip
- Deinstallieren einer Bibliothek mit
%pip
- Installieren einer Bibliothek aus einem Versionskontrollsystem mit
%pip
- Installieren eines privaten Pakets mit Anmeldeinformationen, die von Databricks-Geheimnissen verwaltet werden, mit
%pip
- Installieren eines Pakets aus DBFS mit
%pip
- Speichern von Bibliotheken in einer Anforderungsdatei
- Verwenden einer Anforderungsdatei zum Installieren von Bibliotheken
Installieren einer Bibliothek mit %pip
%pip install matplotlib
Installieren eines Wheel-Pakets mit %pip
%pip install /path/to/my_package.whl
Deinstallieren einer Bibliothek mit %pip
Hinweis
Bibliotheken, die in Databricks Runtime enthalten sind, oder eine Bibliothek, die als Clusterbibliothek installiert wurde, können nicht deinstalliert werden. Wenn Sie eine andere Bibliotheksversion als die in Databricks Runtime enthaltene oder die auf dem Cluster installierte Version installiert haben, können Sie %pip uninstall
verwenden, um die Bibliothek auf die Standardversion in Databricks Runtime oder die auf dem Cluster installierte Version zurückzusetzen, aber Sie können keinen %pip
-Befehl verwenden, um die Version einer in Databricks Runtime enthaltenen oder auf dem Cluster installierten Bibliothek zu deinstallieren.
%pip uninstall -y matplotlib
Die -y
-Option ist erforderlich.
Installieren einer Bibliothek aus einem Versionskontrollsystem mit %pip
%pip install git+https://github.com/databricks/databricks-cli
Sie können Parameter zur URL hinzufügen, um Elemente wie die Version oder das Git-Unterverzeichnis anzugeben. Weitere Informationen und Beispiele zur Verwendung anderer Versionskontrollsysteme finden Sie unter VCS-Unterstützung.
Installieren eines privaten Pakets mit Anmeldeinformationen, die von Databricks-Geheimnissen verwaltet werden, mit %pip
Pip unterstützt die Installation von Paketen aus privaten Quellen mit Standardauthentifizierung, einschließlich privater Versionskontrollsysteme und privater Paketrepositorys wie Nexus und Artifactory. Die Geheimnisverwaltung ist über die Databricks Secrets-API verfügbar, mit der Sie Authentifizierungstoken und Kennwörter speichern können. Verwenden Sie die DBUtils-API, um über Ihr Notebook auf Geheimnisse zuzugreifen. Beachten Sie, dass Sie bei Magic-Befehlen $variables
verwenden können.
Um ein Paket aus einem privaten Repository zu installieren, geben Sie die Repository-URL mit der --index-url
Option zu %pip install
an, oder fügen Sie sie der pip
Konfigurationsdatei unter ~/.pip/pip.conf
hinzu.
token = dbutils.secrets.get(scope="scope", key="key")
%pip install --index-url https://<user>:$token@<your-package-repository>.com/<path/to/repo> <package>==<version> --extra-index-url https://pypi.org/simple/
Auf ähnliche Weise können Sie die Geheimnisverwaltung mit Magic-Befehlen verwenden, um private Pakete aus Versionskontrollsystemen zu installieren.
token = dbutils.secrets.get(scope="scope", key="key")
%pip install git+https://<user>:$token@<gitprovider>.com/<path/to/repo>
Installieren eines Pakets aus DBFS mit %pip
Sie können %pip
verwenden, um ein privates Paket zu installieren, das in DBFS gespeichert wurde.
Wenn Sie eine Datei in DBFS hochladen, wird die Datei automatisch umbenannt, wobei Leerzeichen, Zeiträume und Bindestriche durch Unterstriche ersetzt werden. pip
erfordert, dass der Name der Wheel-Datei Punkte in der Version (z. B. 0.1.0) und Bindestriche anstelle von Leerzeichen oder Unterstrichen verwendet. Um das Paket mit einem %pip
-Befehl zu installieren, müssen Sie die Datei umbenennen, um diese Anforderungen zu erfüllen.
%pip install /dbfs/mypackage-0.0.1-py3-none-any.whl
Speichern von Bibliotheken in einer Anforderungsdatei
%pip freeze > /dbfs/requirements.txt
Alle Unterverzeichnisse im Dateipfad müssen bereits vorhanden sein. Wenn Sie %pip freeze > /dbfs/<new-directory>/requirements.txt
ausführen, schlägt der Befehl fehl, wenn das Verzeichnis /dbfs/<new-directory>
noch nicht vorhanden ist.
Verwenden einer Anforderungsdatei zum Installieren von Bibliotheken
Eine Anforderungsdatei enthält eine Liste der Pakete, die mit pip
installiert werden. Ein Beispiel für die Verwendung einer Anforderungsdatei ist:
%pip install -r /dbfs/requirements.txt
Weitere Informationen zu Dateien finden Sie unter Format der Anforderungsdateirequirements.txt
.
Verwalten von Bibliotheken mit %conda
-Befehlen
Wichtig
%conda
-Befehle sind veraltet und werden nach Databricks Runtime ML 8.4 nicht mehr unterstützt. Databricks empfiehlt die Verwendung von %pip
zum Verwalten von Bibliotheken im Notebook-Bereich. Wenn Sie Python-Bibliotheken benötigen, die nur mit conda installiert werden können, können Sie conda-basierte Docker-Container verwenden, um die benötigten Bibliotheken vorab zu installieren.
Anaconda Inc. hat die Vertragsbedingungen für die Kanäle von anaconda.org im September 2020 aktualisiert. Gemäß den neuen Vertragsbedingungen benötigen Sie nun möglicherweise eine kommerzielle Lizenz für die Nutzung der Paket- und Verteilungslösung von Anaconda. Weitere Informationen finden Sie unter Anaconda Commercial Edition FAQ (Häufig gestellte Fragen zu Anaconda Commercial Edition). Jegliche Nutzung von Anaconda-Kanälen unterliegt den Anaconda-Vertragsbedingungen.
Aufgrund dieser Änderung hat Databricks die Standardkanalkonfiguration für den Conda-Paket-Manager entfernt. Dies ist eine wichtige Änderung.
Um Pakete mit dem %conda
-Befehl zu installieren oder zu aktualisieren, müssen Sie einen Kanal mit -c
angeben. Sie müssen außerdem die gesamte Verwendung von %conda install
und %sh conda install
aktualisieren, um einen Kanal mit -c
anzugeben. Wenn Sie keinen Kanal angeben, wird für Conda-Befehle der Fehler PackagesNotFoundError
angezeigt.
Der %conda
-Befehl entspricht dem conda-Befehl und unterstützt dieselbe API mit einigen der unten aufgeführten Einschränkungen. Die folgenden Abschnitte enthalten Beispiele für die Verwendung von %conda
-Befehlen zum Verwalten Ihrer Umgebung. Weitere Informationen zum Installieren von Python-Paketen mit conda
finden Sie in der Dokumentation zur conda-Installation.
Beachten Sie, dass %conda
-Magic-Befehle auf Databricks Runtime nicht verfügbar sind. Sie sind nur für Databricks Runtime ML bis Databricks Runtime ML 8.4 und für Databricks Runtime für Genomics verfügbar. Databricks empfiehlt die Verwendung von pip
zum Installieren von Bibliotheken. Weitere Informationen finden Sie unter Grundlegendes zu Conda und pip.
Wenn Sie sowohl %pip
- als auch %conda
-Befehle in einem Notebook verwenden müssen, siehe Interaktionen zwischen pip- und conda-Befehlen.
Hinweis
Die folgenden conda
-Befehle werden nicht unterstützt, wenn sie mit %conda
verwendet werden:
activate
create
init
run
env create
env remove
In diesem Abschnitt
- Installieren einer Bibliothek mit
%conda
- Deinstallieren einer Bibliothek mit
%conda
- Speichern und Wiederverwenden oder Freigeben einer Umgebung
- Auflisten der Python-Umgebung eines Notebooks
- Interaktionen zwischen - und
conda
-Befehlen
Installieren einer Bibliothek mit %conda
%conda install matplotlib -c conda-forge
Deinstallieren einer Bibliothek mit %conda
%conda uninstall matplotlib
Speichern und Wiederverwenden oder Freigeben einer Umgebung
Wenn Sie ein Notebook von einem Cluster trennen, wird die Umgebung nicht gespeichert. Führen Sie die folgenden Schritte aus, um eine Umgebung zu speichern, damit Sie sie später wiederverwenden oder für eine andere Person freigeben können.
Databricks empfiehlt, Umgebungen nur zwischen Clustern freizugeben, auf denen die gleiche Version von Databricks Runtime ML oder die gleiche Version von Databricks Runtime for Genomics ausgeführt wird.
Speichern Sie die Umgebung als Conda-YAML-Spezifikation.
%conda env export -f /dbfs/myenv.yml
Importieren Sie die Datei über
conda env update
in ein anderes Notebook.%conda env update -f /dbfs/myenv.yml
Auflisten der Python-Umgebung eines Notebooks
Verwenden Sie %conda list
, um die einem Notebook zugeordnete Python-Umgebung anzuzeigen:
%conda list
Interaktionen zwischen pip
- und conda
-Befehlen
Um Konflikte zu vermeiden, befolgen Sie diese Richtlinien, wenn Sie pip
oder conda
verwenden, um Python-Pakete und -Bibliotheken zu installieren.
- Bibliotheken, die mithilfe der API oder der Clusterbenutzeroberfläche installiert werden, werden mit
pip
installiert. Wenn Bibliotheken über die API oder die Clusterbenutzeroberfläche installiert wurden, sollten Sie beim Installieren von Bibliotheken im Notebook-Bereich nur%pip
-Befehle verwenden. - Wenn Sie Bibliotheken im Notebook-Bereich in einem Cluster verwenden, können in diesem Cluster ausgeführte Initialisierungsskripts entweder
conda
- oderpip
-Befehle verwenden, um Bibliotheken zu installieren. Wenn das Initialisierungsskript jedochpip
-Befehle enthält, verwenden Sie nur%pip
-Befehle in Notebooks (nicht%conda
). - Es empfiehlt sich, entweder ausschließlich
pip
-Befehle oder ausschließlichconda
-Befehle zu verwenden. Wenn Sie einige Pakete mitconda
und einige mitpip
installieren müssen, führen Sie zuerst dieconda
-Befehle aus, und führen Sie danach diepip
-Befehle aus. Weitere Informationen finden Sie unter Verwenden von Pip in einer Conda-Umgebung.
Häufig gestellte Fragen (FAQ)
- Wie interagieren Bibliotheken, die über die Clusterbenutzeroberfläche/-API installiert werden, mit Bibliotheken im Notebook-Bereich?
- Wie interagieren Bibliotheken, die mithilfe eines Initialisierungsskripts installiert werden, mit Bibliotheken im Notebook-Bereich?
- Kann ich
%pip
- und%conda
-Befehle in Auftragsnotebooks verwenden? - Kann ich
%pip
- und%conda
-Befehle in R- oder Scala-Notebooks verwenden? - Kann ich
%sh pip
oder%sh conda
verwenden? - Kann ich R-Pakete mit
%conda
-Befehlen aktualisieren?
Wie interagieren Bibliotheken, die über die Clusterbenutzeroberfläche/-API installiert werden, mit Bibliotheken im Notebook-Bereich?
Bibliotheken, die über die Clusterbenutzeroberfläche oder -API installiert werden, sind für alle Notebooks im Cluster verfügbar. Diese Bibliotheken werden mit pip
installiert. Wenn Bibliotheken über die Clusterbenutzeroberfläche installiert werden, verwenden Sie daher nur %pip
-Befehle in Notebooks.
Wie interagieren Bibliotheken, die mithilfe eines Initialisierungsskripts installiert werden, mit Bibliotheken im Notebook-Bereich?
Bibliotheken, die mit einem Initialisierungsskript installiert werden, sind für alle Notebooks im Cluster verfügbar.
Wenn Sie Bibliotheken im Notebook-Bereich in einem Cluster verwenden, auf dem Databricks Runtime ML oder Databricks Runtime für Genomics ausgeführt wird, können Initialisierungsskripts, die im Cluster ausgeführt werden, entweder conda
- oder pip
-Befehle verwenden, um Bibliotheken zu installieren. Wenn das Initialisierungsskript jedoch pip
-Befehle enthält, dann verwenden Sie nur %pip
-Befehle in Notebooks.
Mit diesem Notebook-Codeausschnitt wird beispielsweise ein Skript generiert, das fast.ai-Pakete auf allen Clusterknoten installiert.
dbutils.fs.put("dbfs:/home/myScripts/fast.ai", "conda install -c pytorch -c fastai fastai -y", True)
Kann ich %pip
- und %conda
-Befehle in Auftragsnotebooks verwenden?
Ja.
Kann ich %pip
- und %conda
-Befehle in R- oder Scala-Notebooks verwenden?
Ja, in einer Python-Magic-Zelle.
Kann ich %sh pip
oder %sh conda
verwenden?
Databricks rät von der Verwendung von %sh pip
ab, da sie nicht mit der Verwendung von %pip
kompatibel ist.
Kann ich R-Pakete mit %conda
-Befehlen aktualisieren?
Nein.
Bekannte Probleme
- Bei Databricks Runtime 7.0 ML und niedriger sowie Databricks Runtime 7.0 für Genomics und niedriger funktioniert eine registrierte benutzerdefinierte Funktion in
%sql
-Zellen nicht, wenn eine registrierte benutzerdefinierte Funktion von Python-Paketen abhängig ist, die mit%pip
oder%conda
installiert wurden. Verwenden Siespark.sql
stattdessen in einer Python-Befehlsshell. - Wenn Sie Databricks Runtime 7.2 ML und niedriger oder Databricks Runtime 7.2 für Genomics und niedriger aktualisieren, wird die neue Umgebung bei Python-Workerprozessen nicht aktiviert, wenn Sie die Notebook-Umgebung mit
%conda
aktualisieren. Dies kann zu Problemen führen, wenn eine PySpark-UDF-Funktion eine Drittanbieterfunktion aufruft, die Ressourcen verwendet, die in der Conda-Umgebung installiert sind. - Wenn Sie
%conda env update
verwenden, um eine Notebookumgebung zu aktualisieren, ist die Installationsreihenfolge von Paketen nicht garantiert. Dies kann zu Problemen für dashorovod
-Paket führen, welches erfordert, dasstensorflow
undtorch
vorhorovod
installiert werden müssen, umhorovod.tensorflow
bzw.horovod.torch
zu verwenden. Deinstallieren Sie in diesem Fall dashorovod
-Paket, und installieren Sie es neu, nachdem Sie sichergestellt haben, dass die Abhängigkeiten installiert sind.