Bibliotheksabhängigkeiten für Databricks-Ressourcenbundles

In diesem Artikel wird die Syntax zum Deklarieren von Bibliotheksabhängigkeiten für Databricks-Ressourcenbundles beschrieben. Pakete ermöglichen die programmgesteuerte Verwaltung von Azure Databricks-Workflows. Weitere Informationen finden Sie unter Was sind Databricks-Ressourcenbundles?

Zusätzlich zu Notebooks sind Ihre Azure Databricks-Aufträge wahrscheinlich von Bibliotheken abhängig, um wie erwartet zu funktionieren. Databricks Asset Bundles-Abhängigkeiten für die lokale Entwicklung werden in der requirements*.txt Datei im Stammverzeichnis des Bündelprojekts angegeben, aber Auftragsaufgabenbibliotheksabhängigkeiten werden in den Bundle-Konfigurationsdateien deklariert und sind häufig als Teil der Spezifikation des Auftragsaufgabentyps erforderlich.

Bundles bieten Unterstützung für die folgenden Bibliotheksabhängigkeiten für Azure Databricks-Aufträge:

  • Python-Wheel-Datei
  • JAR-Datei (Java oder Scala)
  • PyPI-, Maven- oder CRAN-Pakete

Hinweis

Ob eine Bibliothek unterstützt wird, hängt von der Clusterkonfiguration für den Auftrag und der Bibliotheksquelle ab. Vollständige Informationen zur Bibliotheksunterstützung finden Sie unter Bibliotheken.

Python-Wheel-Datei

Wenn Sie einer Auftragsaufgabe eine Python-Wheel-Datei hinzufügen möchten, geben Sie in libraries eine whl Zuordnung für jede zu installierende Bibliothek an. Sie können eine Wheel-Datei aus Arbeitsbereichsdateien, Unity Catalog-Volumes, Cloudobjektspeicher oder einem lokalen Dateipfad installieren.

Wichtig

Bei Verwendung von Databricks Runtime 14.3 LTS und niedriger können Bibliotheken über DBFS installiert werden. Arbeitsbereichsbenutzer und -benutzerinnen können jedoch Bibliotheksdateien ändern, die in DBFS gespeichert sind. Um die Sicherheit von Bibliotheken in einem Azure Databricks-Arbeitsbereich zu verbessern, wurde das Speichern von Bibliotheksdateien im DBFS-Stamm eingestellt und ist in Databricks Runtime 15.0 und höher standardmäßig deaktiviert. Weitere Informationen finden Sie unter Das Speichern von Bibliotheken im DBFS-Stamm ist veraltet und standardmäßig deaktiviert.

Stattdessen empfiehlt Databricks, alle Bibliotheken (einschließlich Python-Bibliotheken, JAR-Dateien und Spark-Connectors) in Arbeitsbereichsdateien oder auf Unity Catalog-Volumes hochzuladen oder Bibliothekspaketrepositorys zu verwenden. Wenn Ihre Workload diese Muster nicht unterstützt, können Sie auch Bibliotheken verwenden, die im Cloudobjektspeicher gespeichert sind.

Das folgende Beispiel zeigt, wie Sie drei Python-Wheel-Dateien für eine Auftragsaufgabe installieren.

  • Die erste Python-Wheel-Datei wurde entweder zuvor in den Azure Databricks-Arbeitsbereich hochgeladen oder als include Element in der syncZuordnung hinzugefügt und befindet sich im gleichen lokalen Ordner wie die Bundle-Konfigurationsdatei.
  • Die zweite Python-Wheel-Datei befindet sich im angegebenen Arbeitsbereichsdateiort im Azure Databricks-Arbeitsbereich.
  • Die dritte Python-Wheel-Datei wurde zuvor in das Volume hochgeladen, das im Azure Databricks-Arbeitsbereich my-volume genannt wurde.
resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - whl: ./my-wheel-0.1.0.whl
            - whl: /Workspace/Shared/Libraries/my-wheel-0.0.1-py3-none-any.whl
            - whl: /Volumes/main/default/my-volume/my-wheel-0.1.0.whl

JAR-Datei

Wenn Sie einer Auftragsaufgabe eine JAR-Datei hinzufügen möchten, geben Sie in libraries eine jar Zuordnung für jede zu installierende Bibliothek an. Sie können eine JAR-Datei aus Arbeitsbereichsdateien, Unity Catalog-Volumes, Cloudobjektspeicher oder einem lokalen Dateipfad installieren.

Wichtig

Bei Verwendung von Databricks Runtime 14.3 LTS und niedriger können Bibliotheken über DBFS installiert werden. Arbeitsbereichsbenutzer und -benutzerinnen können jedoch Bibliotheksdateien ändern, die in DBFS gespeichert sind. Um die Sicherheit von Bibliotheken in einem Azure Databricks-Arbeitsbereich zu verbessern, wurde das Speichern von Bibliotheksdateien im DBFS-Stamm eingestellt und ist in Databricks Runtime 15.0 und höher standardmäßig deaktiviert. Weitere Informationen finden Sie unter Das Speichern von Bibliotheken im DBFS-Stamm ist veraltet und standardmäßig deaktiviert.

Stattdessen empfiehlt Databricks, alle Bibliotheken (einschließlich Python-Bibliotheken, JAR-Dateien und Spark-Connectors) in Arbeitsbereichsdateien oder auf Unity Catalog-Volumes hochzuladen oder Bibliothekspaketrepositorys zu verwenden. Wenn Ihre Workload diese Muster nicht unterstützt, können Sie auch Bibliotheken verwenden, die im Cloudobjektspeicher gespeichert sind.

Das folgende Beispiel zeigt, wie Sie eine JAR-Datei installieren, die zuvor in das Volume hochgeladen wurde, das im Azure Databricks-Arbeitsbereich my-volume genannt wurde.

resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - jar: /Volumes/main/default/my-volume/my-java-library-1.0.jar

PyPI-Paket

Um ein PyPI Paket zu einer Auftragsaufgabendefinition hinzuzufügen, geben Sie in libraries eine pypi-Zuordnung für jedes PyPI-Paket an, das installiert werden soll. Geben Sie für jede Zuordnung Folgendes an:

  • Geben Sie für package, den Namen des zu installierenden PyPI-Pakets an. Eine optionale genaue Versionsangabe wird ebenfalls unterstützt.
  • Geben Sie optional für repo das Repository an, in dem das PyPI-Paket gefunden werden kann. Wenn keine Angabe erfolgt, wird der pip-Standardindex verwendet (https://pypi.org/simple/).

Im folgenden Beispiel wird veranschaulicht, wie Sie zwei PyPI-Pakete installieren.

  • Das erste PyPI-Paket verwendet die angegebene Paketversion und den Standardindex pip.
  • Das zweite PyPI-Paket verwendet die angegebene Paketversion und den explizit angegebenen Index pip.
resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - pypi:
                package: wheel==0.41.2
            - pypi:
                package: numpy==1.25.2
                repo: https://pypi.org/simple/

Maven-Paket

Um ein Maven Paket zu einer Auftragsaufgabendefinition hinzuzufügen, geben Sie in libraries eine maven-Zuordnung für jedes Maven-Paket an, das installiert werden soll. Geben Sie für jede Zuordnung Folgendes an:

  • Geben Sie für coordinates die Maven-Koordinaten im Gradle-Stil für das Paket an.
  • Geben Sie optional für repo das Maven-Repository an, aus dem das Maven-Paket installiert werden soll. Wenn dieses nicht angegeben wird, werden sowohl das Maven Central Repository als auch das Spark-Pakete-Repository durchsucht.
  • Geben Sie optional für exclusions alle Abhängigkeiten an, die explizit ausgeschlossen werden sollen. Weitere Informationen dazu finden Sie unter Maven-Abhängigkeitsausschlüsse.

Im folgenden Beispiel wird veranschaulicht, wie Sie zwei Maven-Pakete installieren.

  • Das erste Maven-Paket verwendet die angegebenen Paketkoordinaten und sucht dieses Paket sowohl im Maven Central Repository als auch im Spark-Pakete-Repository.
  • Das zweite Maven-Paket verwendet die angegebenen Paketkoordinaten, sucht dieses Paket nur im Maven Central Repository und enthält keine Abhängigkeiten dieses Pakets, die dem angegebenen Muster entsprechen.
resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - maven:
                coordinates: com.databricks:databricks-sdk-java:0.8.1
            - maven:
                coordinates: com.databricks:databricks-dbutils-scala_2.13:0.1.4
                repo: https://mvnrepository.com/
                exclusions:
                  - org.scala-lang:scala-library:2.13.0-RC*