Freigeben über


Erstellen einer Python-Raddatei mit Databricks Asset Bundles

Auf dieser Seite wird beschrieben, wie Sie eine Python-Raddatei mit Databricks Asset Bundles erstellen, bereitstellen und ausführen. Weitere Informationen finden Sie unter Was sind Databricks-Ressourcenpakete?.

Eine Beispielkonfiguration, die einen JAR erstellt und in den Unity-Katalog hochlädt, finden Sie unter Bundle, das eine JAR-Datei in unity Cataloghochlädt.

Requirements

  • Databricks CLI Version 0.218.0 oder höher ist installiert, und die Authentifizierung ist konfiguriert. Führen Sie den Befehl databricks -v aus, um zu überprüfen, welche Version der Databricks-CLI installiert ist. Informationen zum Installieren der Databricks CLI finden Sie unter Installieren oder Aktualisieren der Databricks CLI. Informationen zum Konfigurieren der Authentifizierung finden Sie unter Konfigurieren des Zugriffs auf Ihren Arbeitsbereich.
  • uv ist erforderlich, um Tests auszuführen und Abhängigkeiten für dieses Projekt aus einer IDE zu installieren.
  • Für den Remotearbeitsbereich müssen Arbeitsbereichsdateien aktiviert sein. Weitere Informationen finden Sie unter Was sind Arbeitsbereichsdateien?.
  • Ein vorhandener Katalog. Informationen zum Erstellen eines Katalogs finden Sie unter Erstellen von Katalogen.

Erstellen des Bündels mithilfe einer Vorlage

Erstellen Sie das Bündel mithilfe der Standardpaketvorlage "Databricks Asset Bundles" für Python. Dieses Bundle besteht aus Dateien zum Erstellen einer Python-Raddatei und der Definition eines Azure Databricks-Auftrags zum Erstellen dieser Python-Raddatei. Anschließend verwenden Sie den Python-Wheel-Auftrag in Ihrem Azure Databricks-Arbeitsbereich, um die in einer Python-Wheel-Datei bereitgestellten Dateien zu überprüfen, bereitzustellen und zu erstellen.

Wenn Sie ein Bundle von Grund auf neu erstellen möchten, lesen Sie den Abschnitt Manuelles Erstellen eines Bundles.

Schritt 1: Erstellen des Bündels

Ein Bündel enthält die Ressourcen, die Sie bereitstellen möchten, und die Einstellungen für die Workflows, die Sie ausführen möchten.

  1. Verwenden Sie Ihr Terminal oder die Eingabeaufforderung, um zu einem Verzeichnis auf Ihrem lokalen Entwicklungscomputer zu wechseln, das das generierte Bundle der Vorlage enthält.

  2. Verwenden Sie die Databricks CLI-Version, um den bundle init-Befehl auszuführen:

    databricks bundle init
    
  3. Behalten Sie für Template to use den Standardwert „default-python“ bei, indem Sie „Enter“ drücken.

  4. Lassen Sie für Unique name for this project, den Standardwert von my_project, oder geben Sie einen anderen Wert ein, und drücken Sie dann Enter. Dadurch wird der Name des Stammverzeichnisses für dieses Bündel bestimmt. Dieses Stammverzeichnis wird in Ihrem aktuellen Arbeitsverzeichnis erstellt.

  5. Wählen Sie für Include a job that runs a notebookno aus, und drücken Sie Enter. Dadurch wird die Databricks CLI angewiesen, Ihrem Bundle kein Beispielnotizbuch hinzuzufügen.

  6. Wählen Sie für Include an ETL pipelineno aus, und drücken Sie Enter. Dadurch wird die Databricks CLI angewiesen, keine Beispielpipeline in Ihrem Bundle zu definieren.

  7. Behalten Sie für Include a stub (sample) Python package den Standardwert „yes“ bei, indem Sie „Enter“ drücken. Das weist die Databricks CLI an, Beispiel-Python-Radpaketdateien und zugehörige Buildanweisungen zu Ihrem Bundle hinzuzufügen.

  8. Wählen Sie für Use serverlessyes aus, und drücken Sie Enter. Dadurch wird die Databricks CLI angewiesen, Ihr Bundle so zu konfigurieren, dass es auf serverlosem Compute ausgeführt wird.

  9. Geben Sie für Default catalog for any tables created by this project [hive_metastore]den Namen eines vorhandenen Unity-Katalogkatalogs ein.

  10. Wählen Sie Use a personal schema for each user working on this project. für yes aus.

Schritt 2: Erkunden des Bundles

Um die von der Vorlage generierten Dateien anzuzeigen, wechseln Sie zum Stammverzeichnis Ihres neu erstellten Bundles, und öffnen Sie dieses Verzeichnis mit Ihrer bevorzugten IDE. Von besonderem Interesse sind die folgenden Dateien:

  • databricks.yml: Diese Datei gibt den Namen des Bundles an, enthält Verweise auf die Dateien des Bundles, gibt whl Buildeinstellungen an, definiert Katalog- und Schemavariablen und gibt Einstellungen für Zielarbeitsbereiche an.
  • resources/sample_job.job.yml: Diese Datei gibt die Einstellungen des Python-Wheel-Jobs an. Informationen zu den Job-Einstellungen finden Sie unter Job.
  • src/: Dieser Ordner enthält die Dateien, die der Python-Wheel-Job zum Erstellen der Python-Wheel-Datei verwendet.
  • tests/: Dieser Ordner enthält Beispiel-Einheitstests.
  • README.md: Diese Datei enthält zusätzliche Informationen zu den ersten Schritten und zur Verwendung dieser Bündelvorlage.

Note

Wenn Sie die Python-Raddatei auf einem Cluster mit Databricks Runtime 12.2 LTS oder darunter installieren möchten, müssen Sie der databricks.yml Datei die folgende Zuordnung auf oberster Ebene hinzufügen:

# Applies to all tasks of type python_wheel_task.
experimental:
  python_wheel_wrapper: true

Schritt 3: Überprüfen der Bundlekonfiguration

Überprüfen Sie nun, ob die Bundlekonfiguration gültig ist.

  1. Verwenden Sie im Stammverzeichnis die Databricks CLI, um den bundle validate Befehl auszuführen:

    databricks bundle validate
    
  2. Wenn eine Zusammenfassung der Bundlekonfiguration zurückgegeben wird, war die Prüfung erfolgreich. Wenn Fehler zurückgegeben werden, müssen Sie sie beheben und dann diesen Schritt wiederholen.

Schritt 4: Bereitstellen des Bundles im Remotearbeitsbereich

Stellen Sie als Nächstes das Bundle in Ihrem Azure Databricks-Remotearbeitsbereich bereit. Dadurch wird die Python-Wheel-Datei erstellt. Überprüfen Sie, ob ein Azure Databricks-Auftrag in Ihrem Arbeitsbereich erstellt wird.

  1. Verwenden Sie im Stammverzeichnis des Bundles die Databricks CLI, um den bundle deploy-Befehl auszuführen:

    databricks bundle deploy --target dev
    
  2. Vergewissern Sie sich, dass die lokal erstellte Python Wheel-Datei bereitgestellt wurde.

    1. Klicken Sie in der Randleiste Ihres Azure Databricks-Arbeitsbereichs auf "Arbeitsbereich".
    2. Klicken Sie in den folgenden Ordner: Arbeitsbereich > Benutzer ><your-username>> .Paket ><project-name>> dev > Artefakte > .internal ><whl-file-name>.whl.

    Die Python-Wheel-Datei sollte sich in diesem Ordner befinden.

  3. Überprüfen Sie, ob der Auftrag erstellt wurde:

    1. Klicken Sie in der Randleiste Ihres Azure Databricks-Arbeitsbereichs auf Aufträge und Pipelines.
    2. Wählen Sie optional die Filter "Jobs " und "Owned by me" aus .
    3. Klicken Sie auf [dev <your-username>] sample_job.
    4. Klicken Sie auf die Registerkarte "Aufgaben". Es sollte eine python_wheel_task geben.

Wenn Sie nach diesem Schritt Änderungen am Bündel vornehmen, wiederholen Sie die Schritte 3-4, um zu überprüfen, ob ihre Bundlekonfiguration noch gültig ist, und stellen Sie das Projekt dann erneut bereit.

Schritt 5: Ausführen des bereitgestellten Projekts

Lösen Sie nun eine Ausführung des Azure Databricks-Jobs in Ihrem Arbeitsbereich aus.

  1. Verwenden Sie im Stammverzeichnis die Databricks CLI, um den bundle run Befehl auszuführen:

    databricks bundle run --target dev sample_job
    
  2. Kopieren Sie den Wert von Run URL, der in Ihrem Terminal angezeigt wird, und fügen Sie ihn in Ihren Webbrowser ein, um Ihren Azure Databricks-Arbeitsbereich zu öffnen.

  3. Klicken Sie in Ihrem Azure Databricks-Arbeitsbereich, nachdem die Aufgabe erfolgreich abgeschlossen wurde und eine grüne Titelleiste angezeigt wird, auf die Auftragsaufgabe, um die Ergebnisse anzuzeigen.

Erstellen Sie das whl mithilfe von Poetry oder setuptools

Wenn Sie databricks bundle init mit der Standard-Python-Vorlage verwenden, wird ein Bundle erstellt, das zeigt, wie Sie ein Bundle konfigurieren, das ein Python-Wheel mit uv und pyproject.toml aufbaut. Möglicherweise möchten Sie jedoch Poetry verwenden oder setuptools stattdessen ein Rad bauen.

Installiere Poetry oder Setuptools

  1. Installieren Sie Poetry oder setuptools:

    Poetry

    • Installieren Sie Poetry, Version 1.6 oder höher, falls sie noch nicht installiert ist. Um Ihre installierte Version von Poetry zu überprüfen, führen Sie den Befehl poetry -V oder poetry --version aus.
    • Stellen Sie sicher, dass Python-Version 3.10 oder höher installiert ist. Um Ihre Version von Python zu überprüfen, führen Sie den Befehl python -V oder python --version aus.

    Setuptools

    Installieren Sie die Pakete wheel und setuptools, wenn sie noch nicht installiert sind, indem Sie den folgenden Befehl ausführen:

    pip3 install --upgrade wheel setuptools
    
  2. Wenn Sie dieses Bundle mit einem Git-Anbieter speichern möchten, fügen Sie eine .gitignore Datei im Stammverzeichnis des Projekts hinzu, und fügen Sie der Datei die folgenden Einträge hinzu:

    Poetry

    .databricks
    dist
    

    Setuptools

    .databricks
    build
    dist
    src/my_package/my_package.egg-info
    

Hinzufügen von Builddateien

  1. Erstellen Sie im Stammverzeichnis Ihres Bundles die folgenden Ordner und Dateien, je nachdem, ob Sie Poesie oder setuptools zum Erstellen von Python-Raddateien verwenden:

    Poetry

    ├── src
    │     └── my_package
    │           ├── __init__.py
    │           ├── main.py
    │           └── my_module.py
    └── pyproject.toml
    

    Setuptools

    ├── src
    │     └── my_package
    │           ├── __init__.py
    │           ├── main.py
    │           └── my_module.py
    └── setup.py
    
  2. Fügen Sie den folgenden Code zur Datei pyproject.toml oder setup.py hinzu:

    Pyproject.toml

    [tool.poetry]
    name = "my_package"
    version = "0.0.1"
    description = "<my-package-description>"
    authors = ["my-author-name <my-author-name>@<my-organization>"]
    
    [tool.poetry.dependencies]
    python = "^3.10"
    
    [build-system]
    requires = ["poetry-core"]
    build-backend = "poetry.core.masonry.api"
    
    [tool.poetry.scripts]
    main = "my_package.main:main"
    
    • Ersetzen Sie my-author-name durch den primären Kontaktnamen Ihrer Organisation.
    • Ersetzen Sie das my-author-name>@<my-organization durch die primäre E-Mail-Kontaktadresse Ihrer Organisation.
    • Ersetzen Sie <my-package-description> durch eine Anzeigebeschreibung für Ihre Python-Wheel-Datei.

    Setup.py

    from setuptools import setup, find_packages
    
    import src
    
    setup(
      name = "my_package",
      version = "0.0.1",
      author = "<my-author-name>",
      url = "https://<my-url>",
      author_email = "<my-author-name>@<my-organization>",
      description = "<my-package-description>",
      packages=find_packages(where='./src'),
      package_dir={'': 'src'},
      entry_points={
        "packages": [
          "main=my_package.main:main"
        ]
      },
      install_requires=[
        "setuptools"
      ]
    )
    
    • Ersetzen Sie https://<my-url> durch die URL Ihrer Organisation.
    • Ersetzen Sie <my-author-name> durch den primären Kontaktnamen Ihrer Organisation.
    • Ersetzen Sie das <my-author-name>@<my-organization> durch die primäre E-Mail-Kontaktadresse Ihrer Organisation.
    • Ersetzen Sie <my-package-description> durch eine Anzeigebeschreibung für Ihre Python-Wheel-Datei.

Hinzufügen der Artefaktbundlekonfiguration

  1. Fügen Sie die artifacts Mapping-Konfiguration zu Ihrem databricks.yml hinzu, um das whl Artefakt zu erstellen.

    Poetry

    Diese Konfiguration führt den poetry build Befehl aus und gibt den Pfad zur pyproject.toml Datei im selben Verzeichnis wie die databricks.yml Datei an.

    Note

    Wenn Sie bereits eine Python-Wheel-Datei erstellt haben und diese nur bereitstellen möchten, ändern Sie die folgende Paketkonfigurationsdatei, indem Sie die artifacts-Zuordnung auslassen. Die Databricks CLI geht dann davon aus, dass die Python-Raddatei bereits erstellt wurde, und stellt automatisch die Dateien bereit, die in den Einträgen des libraries Arrays whl angegeben sind.

    bundle:
      name: my-wheel-bundle
    
    artifacts:
      default:
        type: whl
        build: poetry build
        path: .
    
    resources:
      jobs:
        wheel-job:
          name: wheel-job
          tasks:
            - task_key: wheel-task
              new_cluster:
                spark_version: 13.3.x-scala2.12
                node_type_id: Standard_DS3_v2
                data_security_mode: USER_ISOLATION
                num_workers: 1
              python_wheel_task:
                entry_point: main
                package_name: my_package
              libraries:
                - whl: ./dist/*.whl
    
    targets:
      dev:
        workspace:
        host: <workspace-url>
    

    Setuptools

    Diese Konfiguration führt den setuptools Befehl aus und gibt den Pfad zur setup.py Datei im selben Verzeichnis wie die databricks.yml Datei an.

    bundle:
      name: my-wheel-bundle
    
    artifacts:
      default:
        type: whl
        build: python3 setup.py bdist wheel
        path: .
    
    resources:
      jobs:
        wheel-job:
          name: wheel-job
          tasks:
            - task_key: wheel-task
              new_cluster:
                spark_version: 13.3.x-scala2.12
                node_type_id: Standard_DS3_v2
                data_security_mode: USER_ISOLATION
                num_workers: 1
              python_wheel_task:
                entry_point: main
                package_name: my_package
              libraries:
                - whl: ./dist/*.whl
    
    targets:
      dev:
        workspace:
        host: <workspace-url>