Aller au contenu principal

Automatiser la création et la gestion des Jobs

Automatisez la création et la gestion de jobs avec les outils de développement : la Databricks CLI, les Databricks SDK et l'API REST.

remarque

Les exemples présentés ici utilisent la CLI Databricks, le SDK Python Databricks et l'API REST comme introduction à ces outils. Pour gérer programmatiquement les Jobs dans le cadre de la CI/CD, utilisez les Declarative Automation Bundles ou le fournisseur Terraform de Databricks.

Comparer les outils

Le tableau suivant compare le Databricks CLI, les SDK Databricks et l'API REST pour la création et la gestion programmatiques des jobs. Pour en savoir plus sur tous les outils de développement disponibles, consultez Outils de développement local.

Outil

Description

Databricks CLI

Accédez aux fonctionnalités de Databricks à l'aide de l'interface de ligne de commande (CLI) Databricks, qui englobe l'API REST. Utilisez la CLI pour les tâches ponctuelles telles que l'expérimentation, le scripting Shell et l'invocation directe de l'API REST.

SDK Databricks

Développez des applications et créez des workflows Databricks personnalisés à l'aide d'un SDK Databricks, disponible pour Python, Java, Go ou R. Au lieu d'envoyer des appels d'API REST directement avec curl ou Postman, vous pouvez utiliser un SDK pour interagir avec Databricks.

API REST Databricks

Si aucune des options ci-dessus ne fonctionne pour votre cas d'utilisation spécifique, vous pouvez utiliser l'API REST Databricks directement. Utilisez l'API REST directement pour des cas d'utilisation tels que l'automatisation de processus lorsqu'un SDK dans votre langage de programmation préféré n'est pas actuellement disponible.

Outil

Description

Databricks CLI

Accédez aux fonctionnalités de Databricks à l'aide de l'interface de ligne de commande (CLI) Databricks, qui englobe l'API REST. Utilisez la CLI pour les tâches ponctuelles telles que l'expérimentation, le scripting Shell et l'invocation directe de l'API REST.

SDK Databricks

Développez des applications et créez des workflows Databricks personnalisés à l'aide d'un SDK Databricks, disponible pour Python, Java, Go ou R. Au lieu d'envoyer des appels d'API REST directement avec curl ou Postman, vous pouvez utiliser un SDK pour interagir avec Databricks.

API REST Databricks

Si aucune des options ci-dessus ne fonctionne pour votre cas d'utilisation spécifique, vous pouvez utiliser l'API REST Databricks directement. Utilisez l'API REST directement pour des cas d'utilisation tels que l'automatisation de processus lorsqu'un SDK dans votre langage de programmation préféré n'est pas actuellement disponible.

Démarrer avec la CLI Databricks

Pour installer et configurer l'authentification pour la CLI Databricks, consultez Installer ou mettre à jour la CLI Databricks et Authentification pour la CLI Databricks.

Le CLI Databricks dispose de groupes de commandes pour les fonctionnalités Databricks, dont un pour les jobs, qui contiennent un ensemble de commandes associées, qui peuvent également contenir des sous-commandes. Le groupe de commandes jobs vous permet de gérer vos jobs et vos exécutions de job avec des actions telles que create, delete et get. Étant donné que la CLI enveloppe l'API REST Databricks, la plupart des commandes CLI sont mappées à une requête d'API REST. Par exemple, databricks jobs get correspond à GET/api/2.2/jobs/get.

Pour afficher des informations d'utilisation et de syntaxe plus détaillées pour le groupe de commandes de jobs, une commande individuelle ou une sous-commande, utilisez l'indicateur h :

  • databricks jobs -h
  • databricks jobs <command-name> -h
  • databricks jobs <command-name> <subcommand-name> -h

Exemple : récupérer un job à l'aide de la CLI

Pour afficher les informations sur un Job individuel dans un Workspace, exécutez la commande suivante :

Bash
$ databricks jobs get <job-id>

databricks jobs get 478701692316314

Cette commande retourne du JSON :

JSON
{
"created_time": 1730983530082,
"creator_user_name": "someone@example.com",
"job_id": 478701692316314,
"run_as_user_name": "someone@example.com",
"settings": {
"email_notifications": {
"no_alert_for_skipped_runs": false
},
"format": "MULTI_TASK",
"max_concurrent_runs": 1,
"name": "job_name",
"tasks": [
{
"email_notifications": {},
"notebook_task": {
"notebook_path": "/Workspace/Users/someone@example.com/directory",
"source": "WORKSPACE"
},
"run_if": "ALL_SUCCESS",
"task_key": "success",
"timeout_seconds": 0,
"webhook_notifications": {}
},
{
"depends_on": [
{
"task_key": "success"
}
],
"disable_auto_optimization": true,
"email_notifications": {},
"max_retries": 3,
"min_retry_interval_millis": 300000,
"notebook_task": {
"notebook_path": "/Workspace/Users/someone@example.com/directory",
"source": "WORKSPACE"
},
"retry_on_timeout": false,
"run_if": "ALL_SUCCESS",
"task_key": "fail",
"timeout_seconds": 0,
"webhook_notifications": {}
}
],
"timeout_seconds": 0,
"webhook_notifications": {}
}
}

Exemple : Créez un Job à l’aide de la CLI

L'exemple suivant utilise l'interface CLI de Databricks pour créer un job. Ce Job contient une seule tâche de Job qui exécute le Notebook spécifié. Ce Notebook a une dépendance sur une version spécifique du package wheel PyPI. Pour exécuter cette tâche, le job crée temporairement un cluster qui exporte une variable d'environnement nommée PYSPARK_PYTHON. Une fois le job exécuté, le cluster est arrêté.

  1. Copiez et collez le JSON suivant dans un fichier. Vous pouvez accéder au format JSON de tout Job existant en sélectionnant l'option **Afficher le JSON** depuis l'interface utilisateur de la page du Job.

    JSON
    {
    "name": "My hello notebook job",
    "tasks": [
    {
    "task_key": "my_hello_notebook_task",
    "notebook_task": {
    "notebook_path": "/Workspace/Users/someone@example.com/hello",
    "source": "WORKSPACE"
    }
    }
    ]
    }
  2. Exécutez la commande suivante, en remplaçant <file-path> par le chemin et le nom du fichier que vous venez de créer.

    Bash
    databricks jobs create --json @<file-path>

Exécutez un Job à l'aide de la CLI

Il existe trois façons d'exécuter votre job lorsque vous utilisez la ligne de commande.

  • Planifié . Si la définition du Job (en JSON) inclut une planification, comme l'exemple suivant, alors le Job s'exécute automatiquement selon la planification.

    JSON
      "schedule": {
    "quartz_cron_expression": "46 0 9 * * ?",
    "timezone_id": "America/Los_Angeles",
    "pause_status": "UNPAUSED"
    },
    "max_concurrent_runs": 1,
  • Trigger avec run-now . La commande databricks jobs run-now CLI Trigger un Job que vous avez déjà créé.

  • Trigger avec submit . La commande databricks jobs submit CLI prend une définition de Job et Trigger une exécution pour le Job.

    Avec submit, le Job n’est pas enregistré et n’est pas visible dans l’interface utilisateur. Il s'exécute une fois et, une fois terminé, il n'existe plus en tant que job.

    Étant donné qu'ils ne sont pas enregistrés, les Jobs soumis ne peuvent pas être auto-optimisés pour le compute Serverless en cas d'échec. Si votre job échoue, vous pouvez utiliser un compute classique pour spécifier les besoins en compute du job. Ou utilisez jobs create et jobs run-now pour créer et exécuter le Job.

Démarrer avec le SDK Databricks

Databricks fournit des SDK qui vous permettent d'automatiser les Opérations en utilisant des langages de programmation populaires tels que Python, Java et Go. Cette section vous montre comment commencer à utiliser le SDK Python pour créer et gérer des jobs sur Databricks.

Vous pouvez utiliser le SDK Databricks à partir de votre notebook Databricks ou de votre machine de développement locale. Si vous utilisez votre machine de développement locale, assurez-vous d'abord de suivre Premiers pas avec le SDK Databricks pour Python.

remarque

Si vous développez à partir d'un Notebook Databricks et utilisez un cluster qui utilise Databricks Runtime 12.2 LTS et versions inférieures, vous devez d'abord installer le SDK Databricks pour Python. Consultez Installer ou mettre à niveau le SDK Databricks pour Python.

Exemple : Créer un Job en utilisant le SDK Python

L'exemple de code de Notebook suivant crée un Job qui exécute un Notebook existant. Il récupère le chemin du Notebook existant et les paramètres du Job associés avec des invites.

Tout d'abord, assurez-vous que la bonne version du SDK a été installée :

Python
%pip install --upgrade databricks-sdk==0.74.0
%restart_python

Ensuite, pour créer un Job avec une tâche de Notebook, exécutez ce qui suit, en répondant aux invites :

Python
from databricks.sdk.service.jobs import JobSettings as Job
from databricks.sdk import WorkspaceClient

job_name = input("Provide a short name for the job, for example, my-job: ")
notebook_path = input("Provide the workspace path of the notebook to run, for example, /Users/someone@example.com/my-notebook: ")
task_key = input("Provide a unique key to apply to the job's tasks, for example, my-key: ")

test_sdk = Job.from_dict(
{
"name": job_name ,
"tasks": [
{
"task_key": task_key,
"notebook_task": {
"notebook_path": notebook_path,
"source": "WORKSPACE",
},
},
],
}
)

w = WorkspaceClient()
j = w.jobs.create(**test_sdk.as_shallow_dict())

print(f"View the job at {w.config.host}/#job/{j.job_id}\n")

Exécuter un Job à l’aide du SDK Python

Il existe trois manières d'exécuter un Job lors de l'utilisation de l'API.

  • Planifié . Si la définition du Job (en JSON) inclut une planification, comme l'exemple suivant, alors le Job s'exécute automatiquement selon la planification.

    JSON
      "schedule": {
    "quartz_cron_expression": "46 0 9 * * ?",
    "timezone_id": "America/Los_Angeles",
    "pause_status": "UNPAUSED"
    },
    "max_concurrent_runs": 1,
  • Trigger avec run-now . L'API jobs.run_now déclenche une exécution pour un Job que vous avez déjà créé.

  • Trigger avec submit . L'API jobs.runs.submit prend une définition de job et déclenche une exécution pour le job.

    Avec submit, le Job n’est pas enregistré et n’est pas visible dans l’interface utilisateur. Il s'exécute une fois et, une fois terminé, il n'existe plus en tant que job.

    Étant donné qu'ils ne sont pas enregistrés, les Jobs soumis ne peuvent pas être auto-optimisés pour le compute Serverless en cas d'échec. Si votre job échoue, vous pouvez utiliser un compute classique pour spécifier les besoins en compute du job. Ou utilisez jobs.create et jobs.run_now pour créer et exécuter le Job.

Découvrir l'API REST Databricks

remarque

Databricks recommande d'utiliser le Databricks CLI et un Databricks SDK, à moins que vous n'utilisiez un langage de programmation qui n'a pas de Databricks SDK correspondant.

L'exemple suivant envoie une requête à l'API REST Databricks pour récupérer les détails d'un seul job. Cela suppose que les variables d'environnement DATABRICKS_HOST et DATABRICKS_TOKEN ont été définies comme décrit dans Effectuer l'authentification par jeton d'accès personnel.

Bash
$ curl --request GET "https://${DATABRICKS_HOST}/api/2.2/jobs/get" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--data '{ "job": "11223344" }'

Pour plus d’informations sur l’utilisation de l’API REST Databricks, consultez la documentation de référence de l’API REST Databricks.

Afficher les Jobs en tant que code

Depuis le workspace Databricks, vous pouvez afficher la représentation JSON, YAML ou Python d'un job.

  1. Dans la barre latérale de votre Databricks Workspace, cliquez sur Jobs et pipelines et sélectionnez un Job.

  2. Cliquez sur le menu kebab à gauche du bouton Exécuter maintenant , puis cliquez sur Afficher en tant que code :

    Élément de menu Afficher comme code

  3. Cliquez sur YAML , Python , ou JSON pour afficher le job en tant que code dans ce langage.

    • Pour le YAML, cliquez sur Copier , puis collez le code directement dans les fichiers *.yaml de configuration de Declarative Automation Bundles pour inclure le job existant dans un bundle. Vous pouvez également cliquer sur Modifier pour modifier la configuration du job en YAML au lieu de l'interface utilisateur.

    • Pour Python, choisissez Databricks SDK ou Declarative Automation Bundles , puis cliquez sur Copier .

    • Pour JSON, cliquez sur Copier et utilisez le code pour créer, mettre à jour ou obtenir le Job à l’aide de la Databricks CLI, des Databricks SDK ou de l’ API REST Databricks.

Nettoyer

Pour supprimer les Jobs que vous venez de créer, exécutez databricks jobs delete <job-id> à partir de la CLI Databricks ou supprimez le Job directement depuis l'interface utilisateur du Workspace Databricks.

Ressources supplémentaires