API REST 1.2

L’API REST Azure Databricks vous permet d’accéder par programmation à Azure Databricks au lieu de passer par l’interface utilisateur web.

Cet article couvre l’API REST 1.2.

Important

Important

Pour accéder aux API REST Databricks, vous devez vous authentifier.

Cas d’usage de l’API REST

  • Démarrez les travaux Apache Spark déclenchés à partir de vos systèmes de production existants ou à partir de systèmes de workflow.
  • Démarrez un cluster d’une certaine taille à une heure fixe de la journée, puis arrêtez-le la nuit par programmation.

Catégories d’API

  • Contexte d’exécution : créez des espaces de noms de variables uniques où les commandes Spark peuvent être appelées.
  • Exécution des commandes : exécutez les commandes dans un contexte d’exécution spécifique.

Détails

  • Cette API REST s’exécute sur HTTPS.
  • Pour extraire des informations, utilisez HTTP GET.
  • Pour modifier l’état, utilisez HTTP POST.
  • Pour le chargement de fichiers, utilisez multipart/form-data. Sinon, utilisez application/json.
  • Le type de contenu de réponse est JSON.
  • Une authentification de base est utilisée pour authentifier l’utilisateur pour chaque appel d’API.
  • Les informations d’identification de l’utilisateur sont encodées en base64 et se trouvent dans l’en-tête HTTP pour chaque appel d’API. Par exemple : Authorization: Basic YWRtaW46YWRtaW4=.

Bien démarrer

Dans les exemples suivants, remplacez <databricks-instance> par l' <databricks-instance> de l’espace de travail de votre déploiement Azure Databricks.

Tester votre connexion

> telnet <databricks-instance> 443

Trying 52.11.163.202...
Connected to <databricks-instance>.
Escape character is '^]'.

> nc -v -z <databricks-instance> 443
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif utun0
    src x.x.x.x port 59063
    dst y.y.y.y port 443
    rank info not available
    TCP aux info available

Connection to <databricks-instance> port 443 [TCP/HTTPS] succeeded!

Vous pouvez utiliser l’un des outils précédents pour tester la connexion. Le port 443 est le port HTTPS par défaut et vous pouvez exécuter l’API REST sur ce port. Si vous ne pouvez pas vous connecter au port 443, contactez help@databricks.com avec l’URL de votre compte.

Exemples d’appels d’API

Les exemples suivants montrent quelques commandes cURL, mais vous pouvez aussi utiliser une bibliothèque HTTP dans le langage de programmation de votre choix.

Requête GET

Si votre URL contient le caractère &, vous devez mettre cette URL entre guillemets pour éviter qu’il soit interprété comme un séparateur de commandes par UNIX :

curl -n 'https://<databricks-instance>/api/1.2/commands/status?clusterId=batVenom&contextId=35585555555555&commandId=45382422555555555'

Requête POST avec application/json

curl -X POST -n https://<databricks-instance>/api/1.2/contexts/create -d "language=scala&clusterId=batVenom"

Points de terminaison d’API par catégorie

Contexte d’exécution

  • https://<databricks-instance>/api/1.2/contexts/create – crée un contexte d’exécution sur un cluster déterminé pour un langage de programmation donné

    • Requête POST avec application/json :
      • data

        {"language": "scala", "clusterId": "peaceJam"}
        
  • https://<databricks-instance>/api/1.2/contexts/status – afficher l’état d’un contexte d’exécution existant

    • Requête GET :
      • Exemples d’arguments : clusterId=peaceJam&contextId=179365396413324
      • status: ["Pending", "Running", "Error"]
  • https://<databricks-instance>/api/1.2/contexts/destroy – détruit un contexte d’exécution

    • Requête POST avec application/json :
      • data

        {"contextId" : "1793653964133248955", "clusterId" : "peaceJam"}
        

Exécution de commande

Limitations connues : l’exécution de commande ne prend pas en charge %run.

  • https://<databricks-instance>/api/1.2/commands/execute – exécute une commande ou un fichier.

    • Requête POST avec application/json :

      • data

        {"language": "scala", "clusterId": "peaceJam", "contextId" : "5456852751451433082", "command": "sc.parallelize(1 to 10).collect"}
        
    • Requête POST avec multipart/form-data :

      • data

        {"language": "python", "clusterId": "peaceJam", "contextId" : "5456852751451433082"}
        
      • files

        {"command": "./myfile.py"}
        
  • https://<databricks-instance>/api/1.2/commands/status – affiche l’état ou le résultat d’une commande

    • Requête GET
      • Exemples d’arguments : clusterId=peaceJam&contextId=5456852751451433082&commandId=5220029674192230006
      • status:["Queued", "Running", "Cancelling", "Finished", "Cancelled", "Error"]
  • https://<databricks-instance>/api/1.2/commands/cancel – annule une commande

    • Requête POST avec application/json :
      • data

        {"clusterId": "peaceJam", "contextId" : "5456852751451433082", "commandId" : "2245426871786618466"}
        

Exemple : Charger et exécuter un fichier JAR Spark

Charger un fichier JAR

Utilisez l' API REST (dernière version) pour télécharger un fichier jar et l’attacher à un cluster.

Exécuter un fichier JAR

  1. Créez un contexte d’exécution.

    curl -X POST -n  https://<databricks-instance>/api/1.2/contexts/create -d "language=scala&clusterId=batVenom"
    
    {
      "id": "3558513128163162828"
    }
    
  2. Exécutez une commande qui utilise votre fichier JAR.

    curl -X POST -n https://<databricks-instance>/api/1.2/commands/execute \
    -d 'language=scala&clusterId=batVenom&contextId=3558513128163162828&command=println(com.databricks.apps.logs.chapter1.LogAnalyzer.processLogFile(sc,null,"dbfs:/somefile.log"))'
    
    {
      "id": "4538242203822083978"
    }
    
  3. Vérifiez l’état de votre commande. Il se peut qu’elle ne retourne pas de résultat immédiatement si le travail Spark que vous exécutez est conséquent.

    curl -n 'https://<databricks-instance>/api/1.2/commands/status?clusterId=batVenom&contextId=3558513128163162828&commandId=4538242203822083978'
    
    {
       "id": "4538242203822083978",
       "results": {
         "data": "Content Size Avg: 1234, Min: 1234, Max: 1234",
         "resultType": "text"
       },
       "status": "Finished"
    }
    

    Les valeurs autorisées pour resultType incluent :

    • error
    • image
    • images
    • table
    • text