Freigeben über


Migrieren vorhandener Ressourcen zu einem Bundle

Beim Erstellen des Bundles sollten Sie Databricks-Ressourcen einschließen, die bereits vorhanden sind und im Remotearbeitsbereich vollständig konfiguriert sind. Mit dem Befehl Databricks CLI bundle generate können Sie die Konfiguration in Ihrem Bundle für vorhandene Apps, Dashboards, Aufträge und Pipelines schnell automatisch generieren. Siehe „databricks bundle generate“. Die Konfiguration, die Sie kopieren und manuell in Paketressourcenkonfigurationsdateien einfügen können, ist in der Databricks-Benutzeroberfläche für einige Ressourcen verfügbar, z. B. Aufträge und Pipelines.

Nachdem Sie die Konfiguration für eine Ressource in Ihrem Bundle generiert und das Bundle bereitgestellt haben, verwenden Sie den bundle deployment bind Befehl, um eine Ressource in Ihrem Bundle an die entsprechende Ressource im Arbeitsbereich zu binden. Siehe Databricks Bundle-Bereitstellungsbindung.

Diese Seite enthält einfache Beispiele, die die Databricks CLI oder UI zum Generieren oder Abrufen der Bündelressourcenkonfiguration verwenden.

Ausführliche Informationen zu Ressourcendefinitionen in Bündeln finden Sie unter Databricks Asset Bundles-Ressourcen.

Generieren einer vorhandenen Auftrags- oder Pipelinekonfiguration mithilfe der Databricks CLI

So generieren Sie die Bundlekonfiguration für einen vorhandenen Auftrag oder eine vorhandene Pipeline programmgesteuert:

  1. Rufen Sie die ID des vorhandenen Auftrags oder der Pipeline aus dem Detailbereich " Auftrag" oder " Pipelinedetails " für den Auftrag oder die Pipeline auf der Benutzeroberfläche ab. Alternativ können Sie die Databricks CLI databricks jobs list oder databricks pipelines list-pipelines verwenden.

  2. Führen Sie den bundle generate job- oder den bundle generate pipelineDatabricks CLI-Befehl aus und legen Sie die Auftrags- oder die Pipeline-ID fest:

    databricks bundle generate job --existing-job-id 6565621249
    
    databricks bundle generate pipeline --existing-pipeline-id 6565621249
    

    Mit diesem Befehl wird eine Bündelkonfigurationsdatei für die Ressource im Ordner des Bundles resources erstellt und alle referenzierten Artefakte in den src Ordner heruntergeladen.

Sie können auch eine Konfiguration für ein vorhandenes Dashboard generieren. Siehe databricks bundle generate dashboard.

Abrufen einer vorhandenen Auftragsdefinition mithilfe der Benutzeroberfläche

So rufen Sie die YAML-Darstellung einer vorhandenen Auftragsdefinition aus der Benutzeroberfläche des Azure Databricks-Arbeitsbereichs ab:

  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 den Name-Link Ihres Jobs.

  4. Klicken Sie neben der Schaltfläche " Jetzt ausführen " auf den Kebab, und klicken Sie dann auf "Als YAML bearbeiten".

  5. Kopieren Sie das YAML, und fügen Sie es der Datei Ihres Bundles databricks.yml hinzu, oder erstellen Sie eine Konfigurationsdatei für Ihren Auftrag im resources Verzeichnis Ihres Bundleprojekts, und verweisen Sie darauf aus der databricks.yml Datei. Siehe Ressourcen.

  6. Laden Sie python-Dateien und -Notizbücher herunter, die im vorhandenen Auftrag referenziert werden, und fügen Sie sie der Projektquelle des Bundles hinzu. Bündelartefakte befinden sich normalerweise im src Verzeichnis eines Bündels.

    Tipp

    Sie können ein vorhandenes Notebook aus einem Azure Databricks-Arbeitsbereich in das .ipynb Format exportieren, in dem Sie in der Azure Databricks-Notebook-Benutzeroberfläche auf File > Export > IPython Notebook klicken.

    Nachdem Sie Notizbücher, Python-Dateien und andere Artefakte zum Bundle hinzugefügt haben, ändern Sie die Verweise auf diese Dateien in Ihrer Auftragsdefinition in ihren lokalen Speicherort. Wenn Sie beispielsweise eine hello_job.job.yml Konfigurationsdatei im resources Ordner Ihres Bündels hatten und ein Notizbuch mit dem Namen hello.ipynb in den src Ordner Ihres Bündels heruntergeladen haben, lautet der Inhalt der hello_job.job.yml Datei wie folgt:

    resources:
      jobs:
        hello_job:
          name: hello_job
          tasks:
            - task_key: hello_task
              notebook_task:
                notebook_path: ../src/hello.ipynb
    

Weitere Informationen zum Anzeigen von Aufträgen als Code auf der Benutzeroberfläche finden Sie unter Anzeigen von Aufträgen als Code.

Abrufen einer vorhandenen Pipelinedefinition mithilfe der Benutzeroberfläche

So rufen Sie die YAML-Darstellung einer vorhandenen Pipelinedefinition aus der Benutzeroberfläche des Azure Databricks-Arbeitsbereichs ab:

  1. Klicken Sie in der Randleiste Ihres Azure Databricks-Arbeitsbereichs auf Aufträge und Pipelines.

  2. Wählen Sie optional den Pipelinefilter aus.

  3. Klicken Sie auf den Namen Ihrer Pipeline.

  4. Klicken Sie neben der Schaltfläche Entwicklung auf Symbol für das Kebab-Menü. und dann auf Einstellungen YAML anzeigen.

  5. Kopieren Sie das YAML der Pipelinedefinition im YaML-Dialogfeld "Pipelineeinstellungen " in die lokale Zwischenablage, indem Sie auf das Symbol "Kopieren" klicken.

  6. Fügen Sie das YAML, das Sie kopiert haben, in die databricks.yml-Datei Ihres Bundles ein oder erstellen Sie eine Konfigurationsdatei für Ihre Pipeline im resources-Ordner Ihres Bundleprojekts und verweisen Sie von Ihrer databricks.yml-Datei darauf. Siehe Ressourcen.

  7. Laden Sie alle Python-Dateien und -Notizbücher herunter, die im Quellcode des Projekts des Bundles referenziert werden, und fügen Sie sie hinzu. Bündelartefakte befinden sich normalerweise im src Verzeichnis eines Bündels.

    Tipp

    Sie können ein vorhandenes Notebook aus einem Azure Databricks-Arbeitsbereich in das .ipynb Format exportieren, in dem Sie in der Azure Databricks-Notebook-Benutzeroberfläche auf File > Export > IPython Notebook klicken.

    Stellen Sie nach dem Hinzufügen Ihrer Notebooks, Python-Dateien und anderen Artefakte zum Bündel sicher, dass Ihre Pipelinedefinition korrekt auf diese verweist. Zum Beispiel für ein Notebook mit dem Namen hello.ipynb, das sich im Verzeichnis src/ des Bundles befindet:

    resources:
      pipelines:
        hello_pipeline:
          name: hello_pipeline
          libraries:
            - notebook:
                path: ../src/hello.ipynb
    

Eine Ressource an ihr entferntes Gegenstück binden

Nachdem Sie Ihrem Bündel eine Ressource hinzugefügt haben, sollten Sie sicherstellen, dass die Ressource in Ihrem Bundle und die vorhandene Ressource im Arbeitsbereich synchronisiert bleiben. Mit dem bundle deployment bind Befehl können Sie sie verknüpfen. Wenn Sie eine Ressource binden, wird die verknüpfte Azure Databricks-Ressource im Arbeitsbereich basierend auf der konfiguration aktualisiert, die im Bundle im nächsten bundle deployPaket definiert ist.

Weitere Informationen zu bundle deployment bind und Informationen über den Ressourcen-Support finden Sie unter Databricks Bundle Deployment Bind.

Mit dem folgenden Befehl wird die Ressource hello_job an ihr Remote-Gegenstück im Arbeitsbereich gebunden. Es wird eine Bestätigung angezeigt, um sicherzustellen, dass Aktualisierungen der Auftragskonfiguration im Bundle auf den entsprechenden entfernten Auftrag angewendet werden, wenn das Bundle das nächste Mal bereitgestellt wird.

databricks bundle deployment bind hello_job 6565621249

Um die Verknüpfung zwischen einer Bündelressource und dessen Gegenstück im Arbeitsbereich zu entfernen, verwenden Sie bundle deployment unbind. Siehe databricks bundle deployment unbind.

databricks bundle deployment unbind hello_job

Migrieren einer Ressource, die in zwei Arbeitsbereichen vorhanden ist

In einigen Setups kann dieselbe Ressource in mehreren Arbeitsbereichen vorhanden sein. Beispielsweise kann sich der gleiche Auftrag in einer Entwicklung und einem Produktionsarbeitsbereich befinden. Wenn der vorhandene Auftrag dem Bundle hinzugefügt wird und das Bündel in einem dieser Arbeitsbereiche bereitgestellt wird, werden doppelte Aufträge erstellt. Um dies zu verhindern, verwenden databricks bundle generate Und databricks bundle deployment bind zusammen:

  1. Definieren Sie die Entwicklungs- und Prodziele in Ihrem Bundle databricks.yml.

  2. Generieren Sie die Bundlekonfiguration für die Ressource (in diesem Beispiel einen Auftrag) im Dev-Ziel:

    databricks bundle generate job --existing-job-id <dev_job_id> –-target dev
    
  3. Die Konfiguration der Ressource in prod unterscheidet sich wahrscheinlich von der Konfiguration der Ressource in Dev, sodass Sie nun die Konfiguration für die Ressource generiert haben, die produktionsspezifischen Einstellungen für die Ressource (im Prod-Ziel) im Bundle definieren.

    targets:
      dev:
        default: true
        #...
      prod:
        #...
        resources:
          jobs:
            my_job:
              # Job prod settings
    
  4. Binden Sie die Ressource im Bündel an den vorhandenen Auftrag in den Entwicklungs- und Prod-Zielen:

    databricks bundle deployment bind my_job <dev_job_id> --target dev
    
    databricks bundle deployment bind my_job <prod_job_id> --target prod
    

Das Bundle kann jetzt in den beiden Umgebungen bereitgestellt werden:

databricks bundle deploy --target dev
databricks bundle deploy --target prod