Ajouter des tâches à des travaux dans les packs de ressources Databricks
Cet article fournit des exemples de différents types de tâches que vous pouvez ajouter aux travaux Azure Databricks dans les packs de ressources Databricks. Consultez Que sont les packs de ressources Databricks ?.
La plupart des types de tâches de travail ont des paramètres spécifiques aux tâches parmi leurs paramètres pris en charge, mais vous pouvez également définir des paramètres de travail qui sont passés aux tâches. Les références de valeurs dynamiques sont prises en charge pour les paramètres de travail, qui permettent de transmettre des valeurs spécifiques à l’exécution du travail entre les tâches. Consulter Qu’est-ce qu’une référence de valeur dynamique ?
Remarque
Vous pouvez remplacer les paramètres de tâche de travail. Consultez Remplacer les paramètres des tâches de travail dans les packs de ressources Databricks.
Conseil
Pour générer rapidement la configuration des ressources pour un travail existant en utilisant l’interface CLI Databricks, vous pouvez utiliser la commande bundle generate job
. Consultez Commandes de pack.
Tâche de notebook
Vous utilisez cette tâche pour exécuter un notebook.
L’exemple suivant ajoute une tâche de notebook à un travail et définit un paramètre de travail nommé my_job_run_id
. Le chemin d’accès du notebook à déployer est relatif au fichier config dans lequel cette tâche est déclarée. La tâche obtient le notebook à partir de son emplacement déployé dans l’espace de travail Azure Databricks.
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}}"
Pour obtenir des mappages supplémentaires que vous pouvez définir pour cette tâche, consultez tasks > notebook_task
dans la charge utile de demande de création de l’opération de travail telle que définie dans POST /api/2.1/jobs/create dans la référence de l’API REST, exprimée au format YAML. Consultez Tâche de notebook pour les projets.
Tâche de condition si/autre
Le condition_task
vous permet d’ajouter une tâche avec une logique conditionnelle if/else à votre travail. La tâche évalue une condition qui peut être utilisée pour contrôler l’exécution d’autres tâches. La tâche de condition n’exige pas de cluster pour être exécutée et ne prend pas en charge les tentatives ou les notifications. Pour plus d’informations sur la tâche if/else, consultez Ajouter une logique de branchement à un travail avec la tâche If/else.
L’exemple suivant contient une tâche de condition et une tâche de notebook, où la tâche de notebook s’exécute uniquement si le nombre de réparations de travaux est inférieur à 5.
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
Pour obtenir des mappages supplémentaires que vous pouvez définir pour cette tâche, consultez tasks > condition_task
dans la charge utile de demande de création de l’opération de travail telle que définie dans POST /api/2.1/jobs/create dans la référence de l’API REST, exprimée au format YAML.
Pour chaque tâche
Le for_each_task
vous permet d’ajouter une tâche à votre travail avec une boucle for each. La tâche exécute une tâche imbriquée pour chaque entrée fournie. Pour plus d’informations sur le for_each_task
, consultez Exécuter une tâche de travail Azure Databricks paramétrée dans une boucle.
L’exemple suivant ajoute un for_each_task
à un travail, où il effectue une boucle sur les valeurs d’une autre tâche et les traite.
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
Pour obtenir des mappages supplémentaires que vous pouvez définir pour cette tâche, consultez tasks > for_each_task
dans la charge utile de demande de création de l’opération de travail telle que définie dans POST /api/2.1/jobs/create dans la référence de l’API REST, exprimée au format YAML.
Tâche de script Python
Vous utilisez cette tâche pour exécuter un fichier Python.
L’exemple suivant ajoute une tâche de script Python à un travail. Le chemin d’accès du fichier Python à déployer est relatif au fichier config dans lequel cette tâche est déclarée. La tâche obtient le fichier Python à partir de son emplacement déployé dans l’espace de travail Azure Databricks.
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
Pour obtenir des mappages supplémentaires que vous pouvez définir pour cette tâche, consultez tasks > spark_python_task
dans la charge utile de demande de création de l’opération de travail telle que définie dans POST /api/2.1/jobs/create dans la référence de l’API REST, exprimée au format YAML. Consultez également Tâche de script Python pour les projets.
Tâche de Wheel Python
Vous utilisez cette tâche pour exécuter un fichier wheel Python.
L’exemple suivant ajoute une tâche de Wheel Python à un travail. Le chemin d’accès du fichier Wheel Python à déployer est relatif au fichier config dans lequel cette tâche est déclarée. Consultez Dépendances de bibliothèque de packs de ressources Databricks.
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
Pour obtenir des mappages supplémentaires que vous pouvez définir pour cette tâche, consultez tasks > python_wheel_task
dans la charge utile de demande de création de l’opération de travail telle que définie dans POST /api/2.1/jobs/create dans la référence de l’API REST, exprimée au format YAML. Consultez également Développer un fichier de roue Python à l’aide de regroupements de ressources Databricks et Tâche de roue Python pour les projets.
Tâche JAR
Vous utilisez cette tâche pour exécuter un fichier JAR. Vous pouvez référencer des bibliothèques JAR locales ou celles qui se trouvent dans un espace de travail, un volume Unity Catalog ou un emplacement de stockage cloud externe. Consultez Dépendances de bibliothèque de packs de ressources Databricks.
L’exemple suivant ajoute une tâche JAR à un travail. Le chemin d’accès au fichier JAR est à l’emplacement de volume spécifié.
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
Pour obtenir des mappages supplémentaires que vous pouvez définir pour cette tâche, consultez tasks > spark_jar_task
dans la charge utile de demande de création de l’opération de travail telle que définie dans POST /api/2.1/jobs/create dans la référence de l’API REST, exprimée au format YAML. Consultez Tâche JAR pour les projets.
Tâche de fichier SQL
Vous utilisez cette tâche pour exécuter un fichier SQL qui se trouve dans un espace de travail ou un dépôt Git distant.
L’exemple suivant ajoute une tâche de fichier SQL à un travail. Cette tâche de fichier SQL utilise l’entrepôt SQL spécifié pour exécuter le fichier SQL spécifié.
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
Pour obtenir un ID d’entrepôt SQL, ouvrez la page des paramètres de l’entrepôt SQL,’puis copiez l’ID trouvé entre des parenthèses après le nom de l’entrepôt dans le champ Nom sous l’onglet Vue d’ensemble.
Pour obtenir des mappages supplémentaires que vous pouvez définir pour cette tâche, consultez tasks > sql_task > file
dans la charge utile de demande de création de l’opération de travail telle que définie dans POST /api/2.1/jobs/create dans la référence de l’API REST, exprimée au format YAML. Consultez Tâche SQL pour les projets.
Tâche de pipelines Delta Live Tables
Vous utilisez cette tâche pour exécuter un pipeline Delta Live Tables. Consultez l’article Qu’est-ce que Delta Live Tables ?.
L’exemple suivant ajoute une tâche de pipeline Delta Live Tables à un travail. Cette tâche de pipeline Delta Live Tables exécute le pipeline spécifié.
resources:
jobs:
my-pipeline-job:
name: my-pipeline-job
tasks:
- task_key: my-pipeline-task
pipeline_task:
pipeline_id: 11111111-1111-1111-1111-111111111111
Vous pouvez obtenir l’ID d’un pipeline en ouvrant le pipeline dans l’espace de travail et en copiant la valeur de ID de pipeline sous l’onglet Détails du pipeline de la page des paramètres du pipeline.
Pour obtenir des mappages supplémentaires que vous pouvez définir pour cette tâche, consultez tasks > pipeline_task
dans la charge utile de demande de création de l’opération de travail telle que définie dans POST /api/2.1/jobs/create dans la référence de l’API REST, exprimée au format YAML. Consultez Tâche du pipeline Delta Live Tables pour les projets.
Tâche dbt
Vous utilisez cette tâche pour exécuter une ou plusieurs commandes dbt. Consultez Se connecter à dbt Cloud.
L’exemple suivant ajoute une tâche dbt à un travail. Cette tâche dbt utilise l’entrepôt SQL spécifié pour exécuter les commandes dbt spécifiées.
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"
Pour obtenir un ID d’entrepôt SQL, ouvrez la page des paramètres de l’entrepôt SQL,’puis copiez l’ID trouvé entre des parenthèses après le nom de l’entrepôt dans le champ Nom sous l’onglet Vue d’ensemble.
Pour obtenir des mappages supplémentaires que vous pouvez définir pour cette tâche, consultez tasks > dbt_task
dans la charge utile de demande de création de l’opération de travail telle que définie dans POST /api/2.1/jobs/create dans la référence de l’API REST, exprimée au format YAML. Consultez Tâche dbt pour les projets.
Les packs de ressources Databricks incluent également un modèle de projet dbt-sql
qui définit un travail avec une tâche dbt, ainsi que des profils dbt pour les travaux dbt déployés. Pour plus d’informations sur les modèles de packs de ressources Databricks, consultez Utiliser un modèle de pack par défaut.
Exécuter une tâche d’un travail
Vous utilisez cette tâche pour exécuter un autre travail.
L’exemple suivant contient une tâche de travail d’exécution dans le deuxième travail qui exécute le premier travail.
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}
Cet exemple utilise une substitution pour récupérer l’ID du travail à exécuter. Pour obtenir l’ID d’un travail depuis l’interface utilisateur, ouvrez le travail dans l’espace de travail, puis copiez l’ID depuis la valeur de ID de travail dans l’onglet Détails du travail de la page des paramètres des travaux.
Pour obtenir des mappages supplémentaires que vous pouvez définir pour cette tâche, consultez tasks > run_job_task
dans la charge utile de demande de création de l’opération de travail telle que définie dans POST /api/2.1/jobs/create dans la référence de l’API REST, exprimée au format YAML.