Freigeben über


Hinzufügen von Tasks zu Jobs in Databricks Asset Bundles

Dieser Artikel enthält Beispiele für verschiedene Arten von Aufgaben, die Sie Azure Databricks-Aufträgen in Databricks Asset Bundles hinzufügen können. Weitere Informationen finden Sie unter Was sind Databricks-Ressourcenbundles?.

Die meisten Auftragsaufgabentypen weisen aufgabenspezifische Parameter unter den unterstützten Einstellungen auf, aber Sie können auch Auftragsparameter definieren, die an Aufgaben übergeben werden. Dynamische Werteverweise werden für Auftragsparameter unterstützt, die das Übergeben bestimmter Werte für den Auftrag ermöglichen, die zwischen Vorgängen ausgeführt werden. Siehe Was ist eine dynamische Wertreferenz?.

Hinweis

Sie können Auftragsaufgabeneinstellungen außer Kraft setzen. Siehe Außerkraftsetzen von Einstellungen von Auftragsaufgaben in Databricks-Ressourcenpaketen.

Tipp

Um mithilfe der Databricks CLI schnell eine Ressourcenkonfiguration für einen vorhandenen Auftrag zu generieren, können Sie den bundle generate job-Befehl verwenden. Siehe Bundlebefehle.

Notebook-Aufgabe

Sie verwenden diesen Task, um ein Notebook auszuführen.

Im folgenden Beispiel wird einem Auftrag eine Notebook-Aufgabe hinzugefügt und ein Auftragsparameter mit dem Namen my_job_run_id festgelegt. Der Pfad für das bereitzustellende Notebook ist relativ zur Konfigurationsdatei, in der diese Aufgabe deklariert wird. Der Task holt das Notebook von seinem bereitgestellten Standort im Azure Databricks-Arbeitsbereich ab.

resources:
  jobs:
    my-notebook-job:
      name: my-notebook-job
      tasks:
        - task_key: my-notebook-task
          notebook_task:
            notebook_path: ./my-notebook.ipynb
      parameters:
        - name: my_job_run_id
          default: '{{job.run_id}}'

Weitere Zuordnungen, die Sie für diesen Task festlegen können, finden Sie im YAML-Format gemäß der Definition in POST /api/2.1/jobs/create in der REST-API-Referenz unter tasks > notebook_task in der Anforderungspayload des Erstellungsauftrags. Siehe Notebooktask für Aufträge.

If/Else-Bedingungsaufgabe

Der condition_task ermöglicht es Ihnen, Ihrem Job eine Aufgabe mit if/else-bedingter Logik hinzuzufügen. Der Vorgang wertet eine Bedingung aus, die zum Steuern der Ausführung anderer Aufgaben verwendet werden kann. Die Bedingungsaufgabe erfordert keinen Cluster zur Ausführung und unterstützt keine Wiederholungen oder Benachrichtigungen. Weitere Informationen zum If/Else-Task finden Sie unter Hinzufügen der Verzweigungslogik zu einem Auftrag mit dem If/Else-Task.

Das folgende Beispiel enthält eine Bedingungsaufgabe und eine Notebooktask, bei der die Notebooktask nur ausgeführt wird, wenn die Anzahl der Auftragsreparaturen kleiner als 5 ist.

resources:
  jobs:
    my-job:
      name: my-job
      tasks:
        - task_key: condition_task
          condition_task:
            op: LESS_THAN
            left: '{{job.repair_count}}'
            right: '5'
        - task_key: notebook_task
          depends_on:
            - task_key: condition_task
              outcome: 'true'
          notebook_task:
            notebook_path: ../src/notebook.ipynb

Weitere Zuordnungen, die Sie für diesen Task festlegen können, finden Sie im YAML-Format gemäß der Definition in POST /api/2.1/jobs/create in der REST-API-Referenz unter tasks > condition_task in der Anforderungspayload des Erstellungsauftrags.

Für jeden Vorgang

Mit for_each_task können Sie Ihrem Task eine Aufgabe mit für jede Schleife hinzufügen. Die Aufgabe führt für jede bereitgestellte Eingabe eine geschachtelte Aufgabe aus. Weitere Informationen zum for_each_taskfinden Sie unter . Verwenden Sie eine For each-Aufgabe, um eine andere Aufgabe in einer Schleife auszuführen.

Im folgenden Beispiel wird einem Job ein for_each_task hinzugefügt, der die Werte einer anderen Aufgabe durchläuft und verarbeitet.

resources:
  jobs:
    my_job:
      name: my_job
      tasks:
        - task_key: generate_countries_list
          notebook_task:
            notebook_path: ../src/generate_countries_list.ipnyb
        - task_key: process_countries
          depends_on:
            - task_key: generate_countries_list
          for_each_task:
            inputs: '{{tasks.generate_countries_list.values.countries}}'
            task:
              task_key: process_countries_iteration
              notebook_task:
                notebook_path: ../src/process_countries_notebook.ipnyb

Weitere Zuordnungen, die Sie für diesen Task festlegen können, finden Sie im YAML-Format gemäß der Definition in POST /api/2.1/jobs/create in der REST-API-Referenz unter tasks > for_each_task in der Anforderungspayload des Erstellungsauftrags.

Python-Skriptaufgabe

Sie verwenden diesen Task, um eine Python-Datei auszuführen.

Im folgenden Beispiel wird einem Job eine Python-Skriptaufgabe hinzugefügt. Der Pfad für die bereitzustellende Python-Datei ist relativ zur Konfigurationsdatei, in der diese Aufgabe deklariert wird. Mit dem Task wird die Python-Datei vom bereitgestellten Speicherort in den Azure Databricks-Arbeitsbereich abgerufen.

resources:
  jobs:
    my-python-script-job:
      name: my-python-script-job

      tasks:
        - task_key: my-python-script-task
          spark_python_task:
            python_file: ./my-script.py

Weitere Zuordnungen, die Sie für diesen Task festlegen können, finden Sie im YAML-Format gemäß der Definition in POST /api/2.1/jobs/create in der REST-API-Referenz unter tasks > spark_python_task in der Anforderungspayload des Erstellungsauftrags. Siehe auch Python-Skriptaufgabe für Jobs.

Python-Wheeltask

Sie verwenden diesen Task, um eine Python-Wheel-Datei auszuführen.

Im folgenden Beispiel wird einem Job eine Python-Wheel-Aufgabe hinzugefügt. Der Pfad für die bereitzustellende Python-Wheel-Datei ist relativ zur Konfigurationsdatei, in der diese Aufgabe deklariert wird. Weitere Informationen finden Sie unter Bibliotheksabhängigkeiten für Databricks-Ressourcenbundles.

resources:
  jobs:
    my-python-wheel-job:
      name: my-python-wheel-job
      tasks:
        - task_key: my-python-wheel-task
          python_wheel_task:
            entry_point: run
            package_name: my_package
          libraries:
            - whl: ./my_package/dist/my_package-*.whl

Weitere Zuordnungen, die Sie für diesen Task festlegen können, finden Sie im YAML-Format gemäß der Definition in POST /api/2.1/jobs/create in der REST-API-Referenz unter tasks > python_wheel_task in der Anforderungspayload des Erstellungsauftrags. Siehe auch Entwickeln einer Python-Wheel-Datei mit Databricks Asset Bundles und Python-Wheel-Aufgabe für Jobs.

JAR-Aufgabe

Sie verwenden diesen Task, um eine JAR-Datei auszuführen. Sie können auf lokale JAR-Bibliotheken oder solche in einem Arbeitsbereich, einem Unity-Katalogvolume oder einem externen Cloudspeicherort verweisen. Weitere Informationen finden Sie unter Bibliotheksabhängigkeiten für Databricks-Ressourcenbundles.

Im folgenden Beispiel wird einem Auftrag ein JAR-Task hinzugefügt. Der Pfad für die JAR-Datei ist der angegebene Volumespeicherort.

resources:
  jobs:
    my-jar-job:
      name: my-jar-job
      tasks:
        - task_key: my-jar-task
          spark_jar_task:
            main_class_name: org.example.com.Main
          libraries:
            - jar: /Volumes/main/default/my-volume/my-project-0.1.0-SNAPSHOT.jar

Weitere Zuordnungen, die Sie für diesen Task festlegen können, finden Sie im YAML-Format gemäß der Definition in POST /api/2.1/jobs/create in der REST-API-Referenz unter tasks > spark_jar_task in der Anforderungspayload des Erstellungsauftrags. Siehe JAR-Task für Aufträge.

SQL-Dateiaufgabe

Sie verwenden diese Aufgabe, um eine SQL-Datei in einem Arbeitsbereich oder einem Remote-Git-Repository auszuführen.

Im folgenden Beispiel wird einem Auftrag eine SQL-Dateiaufgabe hinzugefügt. Diese SQL-Dateiaufgabe verwendet das angegebene SQL-Warehouse, um die angegebene SQL-Datei auszuführen.

resources:
  jobs:
    my-sql-file-job:
      name: my-sql-file-job
      tasks:
        - task_key: my-sql-file-task
          sql_task:
            file:
              path: /Users/someone@example.com/hello-world.sql
              source: WORKSPACE
            warehouse_id: 1a111111a1111aa1

Um die ID eines SQL-Warehouse abzurufen, öffnen Sie die Einstellungsseite des SQL-Warehouse, und kopieren Sie dann die ID in Klammern nach dem Namen des Warehouse im Feld Name auf der Registerkarte Übersicht.

Weitere Zuordnungen, die Sie für diesen Task festlegen können, finden Sie im YAML-Format gemäß der Definition in POST /api/2.1/jobs/create in der REST-API-Referenz unter tasks > sql_task > file in der Anforderungspayload des Erstellungsauftrags. Siehe SQL-Aufgabe für Aufträge.

DLT-Pipelineaufgabe

Sie verwenden diese Aufgabe, um eine DLT-Pipeline auszuführen. Siehe Was ist DLT?.

Im folgenden Beispiel wird einem Auftrag eine DLT-Pipelineaufgabe hinzugefügt. Dieser DLT-Pipelinetask führt die angegebene Pipeline aus.

resources:
  jobs:
    my-pipeline-job:
      name: my-pipeline-job
      tasks:
        - task_key: my-pipeline-task
          pipeline_task:
            pipeline_id: 11111111-1111-1111-1111-111111111111

Sie erhalten die Pipeline-ID, wenn Sie die Pipeline im Arbeitsbereich öffnen und den Wert der Pipeline-ID auf der Registerkarte Pipelinedetails der Einstellungsseite der Pipeline kopieren.

Weitere Zuordnungen, die Sie für diesen Task festlegen können, finden Sie im YAML-Format gemäß der Definition in POST /api/2.1/jobs/create in der REST-API-Referenz unter tasks > pipeline_task in der Anforderungspayload des Erstellungsauftrags. Siehe DLT-Pipelinetask für Aufträge.

dbt-Aufgabe

Sie verwenden diese Aufgabe, um einen oder mehrere DBT-Befehle auszuführen. Weitere Informationen unter Verbinden mit DBT Cloud.

Im folgenden Beispiel wird einem Auftrag eine dbt-Aufgabe hinzugefügt. Diese DBT-Aufgabe verwendet das angegebene SQL-Warehouse zum Ausführen der angegebenen DBT-Befehle.

resources:
  jobs:
    my-dbt-job:
      name: my-dbt-job
      tasks:
        - task_key: my-dbt-task
          dbt_task:
            commands:
              - 'dbt deps'
              - 'dbt seed'
              - 'dbt run'
            project_directory: /Users/someone@example.com/Testing
            warehouse_id: 1a111111a1111aa1
          libraries:
            - pypi:
                package: 'dbt-databricks>=1.0.0,<2.0.0'

Um die ID eines SQL-Warehouse abzurufen, öffnen Sie die Einstellungsseite des SQL-Warehouse, und kopieren Sie dann die ID in Klammern nach dem Namen des Warehouse im Feld Name auf der Registerkarte Übersicht.

Weitere Zuordnungen, die Sie für diesen Task festlegen können, finden Sie im YAML-Format gemäß der Definition in POST /api/2.1/jobs/create in der REST-API-Referenz unter tasks > dbt_task in der Anforderungspayload des Erstellungsauftrags. Siehe DBT-Task für Aufträge.

Databricks-Ressourcenpakete umfassen auch eine dbt-sql-Projektvorlage, die einen Job mit einem dbt-Task definiert, sowie dbt-Profile für bereitgestellte dbt-Jobs. Informationen zu Databricks Asset Bundles-Vorlagen finden Sie unter Standardbundlevorlagen.

Aufgabe ausführen

Sie verwenden diese Aufgabe, um einen anderen Auftrag auszuführen.

Das folgende Beispiel enthält einen „Auftrag ausführen“-Task im zweiten Auftrag, der den ersten Auftrag ausführt.

resources:
  jobs:
    my-first-job:
      name: my-first-job
      tasks:
        - task_key: my-first-job-task
          new_cluster:
            spark_version: '13.3.x-scala2.12'
            node_type_id: 'i3.xlarge'
            num_workers: 2
          notebook_task:
            notebook_path: ./src/test.py
    my_second_job:
      name: my-second-job
      tasks:
        - task_key: my-second-job-task
          run_job_task:
            job_id: ${resources.jobs.my-first-job.id}

In diesem Beispiel wird eine Ersetzung verwendet, um die ID des auszuführenden Auftrags abzurufen. Um die ID eines Auftrags über die Benutzeroberfläche abzurufen, öffnen Sie den Auftrag im Arbeitsbereich und kopieren die ID aus dem Wert Auftrags-ID auf der Registerkarte Auftragsdetails der Einstellungsseite des Auftrags.

Weitere Zuordnungen, die Sie für diesen Task festlegen können, finden Sie im YAML-Format gemäß der Definition in POST /api/2.1/jobs/create in der REST-API-Referenz unter tasks > run_job_task in der Anforderungspayload des Erstellungsauftrags.