Freigeben über


Automatisieren der Auftragserstellung und -verwaltung

In diesem Artikel erfahren Sie, wie Sie mit Entwicklertools beginnen, um die Erstellung und Verwaltung von Aufträgen zu automatisieren. Es führt Sie mit der Databricks CLI, den Databricks-SDKs und der REST-API ein.

Hinweis

Dieser Artikel enthält Beispiele zum Erstellen und Verwalten von Aufträgen mithilfe der Databricks CLI, des Databricks Python SDK und der REST-API als einfache Einführung in diese Tools. Um Aufträge programmgesteuert als Teil von CI/CD zu verwalten, verwenden Sie Databricks Asset Bundles oder den Databricks Terraform-Anbieter.

Tools vergleichen

In der folgenden Tabelle werden die Databricks CLI, die Databricks-SDKs und die REST-API zum programmgesteuerten Erstellen und Verwalten von Aufträgen verglichen. Weitere Informationen zu allen verfügbaren Entwicklertools finden Sie unter Local development tools.

Werkzeug Beschreibung
Databricks-Befehlszeilenschnittstelle Greifen Sie auf Databricks-Funktionen mithilfe der Befehlszeilenschnittstelle (Databricks Command-Line Interface, CLI) zu, die die REST-API umschließt. Verwenden sie die CLI für einmalige Aufgaben wie Experimente, Shellskripting und direktes Aufrufen der REST-API
Databricks-SDKs Entwickeln Sie Anwendungen und erstellen Sie benutzerdefinierte Databricks-Workflows mit einem Databricks SDK, das für Python, Java, Go oder R verfügbar ist. Anstatt REST-API-Aufrufe direkt mit Curl oder Postman zu senden, können Sie ein SDK für die Interaktion mit Databricks verwenden.
Databricks-REST-API Wenn keine der oben genannten Optionen für Ihren spezifischen Anwendungsfall funktioniert, können Sie die Databricks-REST-API direkt verwenden. Verwenden Sie die REST-API direkt für Anwendungsfälle wie das Automatisieren von Prozessen, bei denen ein SDK in Ihrer bevorzugten Programmiersprache derzeit nicht verfügbar ist.

Erste Schritte mit der Databricks CLI

Informationen zum Installieren und Konfigurieren der Authentifizierung für die Databricks CLI finden Sie unter Installieren oder Aktualisieren der Databricks CLI- und Authentifizierung für die Databricks CLI-.

Die Databricks CLI verfügt über Befehlsgruppen für Databricks-Features, einschließlich einer für Aufträge, die einen Satz verwandter Befehle enthalten, die auch Unterbefehle enthalten können. Mit der Befehlsgruppe jobs können Sie Ihre Aufträge und Auftragsläufe mit Aktionen wie create, delete und getverwalten. Da die CLI die Databricks-REST-API umschließt, werden die meisten CLI-Befehle einer REST-API-Anforderung zugeordnet. databricks jobs get wird beispielsweise GET/api/2.2/jobs/get zugeordnet.

Verwenden Sie zum Ausgeben detaillierterer Verwendungs- und Syntaxinformationen für die Befehlsgruppe "Aufträge", einen einzelnen Befehl oder einen Unterbefehl das h Flag:

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

Beispiel: Abrufen eines Auftrags mithilfe der CLI

Um Informationen zu einem einzelnen Auftrag in einem Arbeitsbereich zu drucken, führen Sie den folgenden Befehl aus:

$ databricks jobs get <job-id>

databricks jobs get 478701692316314

Dieser Befehl gibt JSON zurück:

{
  "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": {}
  }
}

Beispiel: Erstellen eines Auftrags mithilfe der CLI

Im folgenden Beispiel wird die Databricks CLI verwendet, um einen Auftrag zu erstellen. Dieser Auftrag enthält eine einzelne Auftragsaufgabe, die das angegebene Notebook ausführt. Dieses Notizbuch hat eine Abhängigkeit von einer bestimmten Version des wheel PyPI-Pakets. Zum Ausführen dieser Aufgabe erstellt der Auftrag vorübergehend einen Cluster, der eine Umgebungsvariable namens PYSPARK_PYTHONexportiert. Nachdem der Auftrag ausgeführt wurde, wird der Cluster beendet.

  1. Kopieren Sie den folgenden JSON-Code, und fügen Sie ihn in eine Datei ein. Sie können auf das JSON-Format eines vorhandenen Auftrags zugreifen, indem Sie die Option JSON- anzeigen aus der Auftragsseiten-UI auswählen.

    {
      "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. Führen Sie den folgenden Befehl aus, und ersetzen Sie <file-path> durch den Pfad und den Namen der soeben erstellten Datei.

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

Ausführen eines Auftrags mithilfe der CLI

Es gibt drei Möglichkeiten zum Ausführen des Yoaur-Auftrags bei Verwendung der Befehlszeile.

  • Geplant. Wenn die Auftragsdefinition (in JSON) einen Zeitplan enthält, z. B. das folgende Beispiel, wird der Auftrag automatisch im Zeitplan ausgeführt.

      "schedule": {
      "quartz_cron_expression": "46 0 9 * * ?",
      "timezone_id": "America/Los_Angeles",
      "pause_status": "UNPAUSED"
    },
    "max_concurrent_runs": 1,
    
  • Trigger mit run-now. Der databricks jobs run-now CLI-Befehl löst eine Ausführung für einen Auftrag aus, den Sie bereits erstellt haben.

  • Trigger mit submit. Der databricks jobs submit CLI-Befehl übernimmt eine Auftragsdefinition und löst eine Ausführung für den Auftrag aus.

    Mit submit wird der Auftrag nicht gespeichert und ist in der Benutzeroberfläche nicht sichtbar. Es läuft einmal und wenn es abgeschlossen ist, existiert es nicht mehr als Job.

    Da sie nicht gespeichert werden, können übermittelte Aufträge im Falle eines Fehlers nicht automatisch für die serverlose Berechnung optimiert werden. Wenn Ihr Auftrag fehlschlägt, sollten Sie die klassische Berechnung verwenden, um die Berechnungsanforderungen für den Auftrag anzugeben. Oder nutzen Sie jobs create und jobs run-now, um den Auftrag zu erstellen und auszuführen.

Erste Schritte mit dem Databricks SDK

Databricks bietet SDKs, mit denen Sie Vorgänge mit gängigen Programmiersprachen wie Python, Java und Go automatisieren können. In diesem Abschnitt erfahren Sie, wie Sie mit dem Python SDK beginnen, um Aufträge auf Databricks zu erstellen und zu verwalten.

Sie können das Databricks SDK aus Ihrem Databricks-Notizbuch oder von Ihrem lokalen Entwicklungscomputer verwenden. Stellen Sie sicher, dass Sie auf Ihrem lokalen Entwicklungscomputer zunächst die Anleitung „Erste Schritte mit dem Databricks SDK für Python“abgeschlossen haben.

Hinweis

Wenn Sie aus einem Databricks-Notizbuch entwickeln und einen Cluster verwenden, der Databricks Runtime 12.2 LTS und unten verwendet, müssen Sie zuerst das Databricks SDK für Python installieren. Siehe Installieren oder Aktualisieren des Databricks SDK für Python.

Beispiel: Erstellen eines Auftrags mit dem Python SDK

Der folgende Beispielnotizbuchcode erstellt einen Auftrag, der ein vorhandenes Notizbuch ausführt. Er ruft den Pfad des vorhandenen Notizbuchs und die zugehörigen Auftragseinstellungen mit Eingabeaufforderungen ab.

Stellen Sie zunächst sicher, dass die richtige Version des SDK installiert wurde:

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

Führen Sie als Nächstes zum Erstellen eines Auftrags mit einer Notebook-Aufgabe Folgendes aus, und reagieren Sie auf die Eingabeaufforderungen:

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")

Ausführen eines Auftrags mit dem Python SDK

Es gibt drei Möglichkeiten zum Ausführen eines Auftrags bei Verwendung der API.

  • Geplant. Wenn die Auftragsdefinition (in JSON) einen Zeitplan enthält, z. B. das folgende Beispiel, wird der Auftrag automatisch im Zeitplan ausgeführt.

      "schedule": {
      "quartz_cron_expression": "46 0 9 * * ?",
      "timezone_id": "America/Los_Angeles",
      "pause_status": "UNPAUSED"
    },
    "max_concurrent_runs": 1,
    
  • Auslöser mit run-now. Die jobs.run_now API löst eine Ausführung für einen Auftrag aus, den Sie bereits erstellt haben.

  • Trigger mit submit. Die jobs.runs.submit API akzeptiert eine Auftragsdefinition und löst eine Ausführung für den Auftrag aus.

    Bei submit wird der Job nicht gespeichert und ist in der UI nicht sichtbar. Sie wird einmal ausgeführt, und wenn sie fertig ist, existiert sie nicht mehr als Aufgabe.

    Da sie nicht gespeichert werden, können übermittelte Aufträge im Falle eines Fehlers nicht automatisch für die serverlose Berechnung optimiert werden. Wenn Ihr Auftrag fehlschlägt, sollten Sie die klassische Berechnung verwenden, um die Berechnungsanforderungen für den Auftrag anzugeben. Alternativ können Sie jobs.create und jobs.run_now verwenden, um den Auftrag zu erstellen und auszuführen.

Erste Schritte mit der Databricks-REST-API

Hinweis

Databricks empfiehlt die Verwendung der Databricks CLI- und eines Databricks SDK-, es sei denn, Sie verwenden eine Programmiersprache, die nicht über ein entsprechendes Databricks SDK verfügt.

Im folgenden Beispiel wird eine Anforderung an die Databricks-REST-API zum Abrufen von Details für einen einzelnen Auftrag gestellt. Es wird davon ausgegangen, dass die Umgebungsvariablen DATABRICKS_HOST und DATABRICKS_TOKEN so festgelegt wurden, wie unter "Authentifizierung des persönlichen Zugriffstokens" beschrieben.

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

Informationen zur Verwendung der Databricks-REST-API finden Sie in der Referenzdokumentation Databricks REST API.

Anzeigen von Aufträgen als Code

Im Databricks-Arbeitsbereich können Sie die JSON-, YAML- oder Python-Darstellung eines Auftrags anzeigen.

  1. Klicken Sie in der Randleiste Ihres Azure Databricks-Arbeitsbereichs auf Aufträge und Pipelines , und wählen Sie einen Auftrag aus.

  2. Klicken Sie links neben der Schaltfläche " Jetzt ausführen " auf den Kebab, und klicken Sie dann auf "Als Code anzeigen":

    Als Codemenüelement anzeigen

  3. Klicken Sie auf YAML, Python oder JSON , um den Auftrag als Code in dieser Sprache anzuzeigen.

    • Klicken Sie für YAML auf "Kopieren", und fügen Sie den Code dann direkt in Die Konfigurationsdateien*.yaml von Databricks Asset Bundles ein, um den vorhandenen Auftrag in ein Bündel einzuschließen. Sie können auch auf "Bearbeiten" klicken, um die Konfiguration des Auftrags in YAML anstelle der Benutzeroberfläche zu ändern.
    • Wählen Sie für Python databricks SDK oder Databricks Asset Bundles aus, und klicken Sie dann auf Kopieren.
    • Klicken Sie für JSON auf "Kopieren ", und verwenden Sie den Code, um den Auftrag mithilfe der Databricks CLI, der Databricks-SDKs oder der Databricks-REST-API zu erstellen, zu aktualisieren oder abzurufen.

Bereinigung

Führen Sie databricks jobs delete <job-id> aus der Databricks CLI aus, oder löschen Sie den Auftrag direkt aus der Benutzeroberfläche des Databricks-Arbeitsbereichs, um alle soeben erstellten Aufträge zu löschen.

Nächste Schritte