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_task
finden 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.