Udostępnij przez


Automatyzowanie tworzenia zadań i zarządzania nimi

W tym artykule pokazano, jak rozpocząć pracę z narzędziami deweloperskich w celu zautomatyzowania tworzenia zadań i zarządzania nimi. Przedstawia interfejs wiersza polecenia Databricks, zestawy SDK Databricks oraz interfejs API REST.

Notatka

Ten artykuł zawiera przykłady tworzenia zadań i zarządzania nimi przy użyciu interfejsu wiersza polecenia usługi Databricks, zestawu SDK języka Python usługi Databricks i interfejsu API REST jako łatwego wprowadzenia do tych narzędzi. Aby programowo zarządzać pracami w ramach CI/CD, użyj pakietów zasobów usługi Databricks lub dostawcy Databricks Terraform .

Porównanie narzędzi

W poniższej tabeli porównaliśmy interfejs wiersza polecenia usługi Databricks, zestawy SDK usługi Databricks i interfejs API REST do programowego tworzenia zadań i zarządzania nimi. Aby dowiedzieć się więcej o wszystkich dostępnych narzędziach deweloperskich, zobacz Lokalne narzędzia programistyczne.

Narzędzie Opis
interfejs wiersza polecenia (CLI) Databricks Uzyskaj dostęp do funkcji usługi Databricks przy użyciu interfejsu wiersza polecenia usługi Databricks, który opakowuje interfejs API REST. Użyj interfejsu wiersza polecenia dla jednorazowych zadań, takich jak przeprowadzanie eksperymentów, tworzenie skryptów powłoki i bezpośrednie korzystanie z API REST.
SDK Databricks Twórz aplikacje i twórz niestandardowe przepływy pracy usługi Databricks przy użyciu zestawu SDK usługi Databricks dostępnego dla języków Python, Java, Go lub R. Zamiast wysyłać wywołania interfejsu API REST bezpośrednio przy użyciu narzędzia curl lub Postman, możesz użyć zestawu SDK do interakcji z usługą Databricks.
Databricks API REST Jeśli żadna z powyższych opcji nie będzie działać dla konkretnego przypadku użycia, możesz bezpośrednio użyć interfejsu API REST usługi Databricks. Użyj interfejsu API REST bezpośrednio w przypadku przypadków użycia, takich jak automatyzacja procesów, w których zestaw SDK w preferowanym języku programowania nie jest obecnie dostępny.

Rozpocznij pracę z interfejsem wiersza polecenia usługi Databricks

Aby zainstalować i skonfigurować uwierzytelnianie dla Databricks CLI, zobacz Instalowanie lub aktualizowanie Databricks CLI i Uwierzytelnianie dla Databricks CLI.

Interfejs wiersza polecenia usługi Databricks zawiera grupy poleceń dla funkcji usługi Databricks, w tym jeden dla zadań, które zawierają zestaw powiązanych poleceń, które mogą również zawierać polecenia podrzędne. Grupa poleceń jobs umożliwia zarządzanie zadaniami i przebiegami zadań za pomocą akcji, takich jak create, delete i get. Ponieważ CLI obsługuje interfejs API REST usługi Databricks, większość poleceń CLI odpowiada na żądania interfejsu API REST. Na przykład databricks jobs get odwzorowuje GET/api/2.2/jobs/get.

Aby uzyskać bardziej szczegółowe informacje o użyciu i składni dotyczące grupy poleceń jobs, pojedynczego polecenia lub podpolecenia, użyj flagi h:

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

Przykład: pobieranie zadania przy użyciu CLI (interfejsu wiersza polecenia)

Aby wydrukować informacje o pojedynczym zadaniu w obszarze roboczym, uruchom następujące polecenie:

$ databricks jobs get <job-id>

databricks jobs get 478701692316314

To polecenie zwraca kod 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": {}
  }
}

Przykład: tworzenie zadania przy użyciu interfejsu wiersza polecenia

W poniższym przykładzie do utworzenia zadania użyto interfejsu wiersza polecenia usługi Databricks. To zadanie zawiera jedno zadanie, które uruchamia określony notatnik. Ten notatnik ma zależność od określonej wersji pakietu PyPI wheel. Aby uruchomić to zadanie, zadanie tymczasowo tworzy klaster, który eksportuje zmienną środowiskową o nazwie PYSPARK_PYTHON. Po uruchomieniu zadania klaster zostanie wyłączony.

  1. Skopiuj i wklej następujący kod JSON do pliku. Aby uzyskać dostęp do formatu JSON dowolnego istniejącego zadania, wybierz opcję Wyświetl kod JSON w interfejsie użytkownika strony zadania.

    {
      "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. Uruchom następujące polecenie, zastępując <file-path> ścieżką i nazwą właśnie utworzonego pliku.

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

Uruchom zadanie przy użyciu CLI

Istnieją trzy sposoby uruchamiania zadania yoaur podczas korzystania z wiersza polecenia.

  • Zaplanowane. Jeśli definicja zadania (w formacie JSON) zawiera harmonogram, podobnie jak w poniższym przykładzie, zadanie zostanie automatycznie uruchomione zgodnie z harmonogramem.

      "schedule": {
      "quartz_cron_expression": "46 0 9 * * ?",
      "timezone_id": "America/Los_Angeles",
      "pause_status": "UNPAUSED"
    },
    "max_concurrent_runs": 1,
    
  • Wyzwól za pomocą run-now. Polecenie databricks jobs run-now CLI wyzwala przebieg zadania, które zostało już utworzone.

  • Wyzwalacz za pomocą polecenia submit. Polecenie databricks jobs submit interfejsu wiersza polecenia przyjmuje definicję zadania i wyzwala uruchomienie zadania.

    W programie submitzadanie nie jest zapisywane i nie jest widoczne w interfejsie użytkownika. Jest uruchamiany raz i po zakończeniu nie istnieje już jako zadanie.

    Ponieważ nie są one zapisywane, przesłane zadania nie mogą być automatycznie zoptymalizowane pod kątem obliczeń bezserwerowych w przypadku awarii. Jeśli zadanie zakończy się niepowodzeniem, możesz użyć klasycznego środowiska obliczeniowego, aby określić potrzeby obliczeniowe dla zadania. Użyj jobs create i jobs run-now, aby utworzyć i uruchomić zadanie.

Rozpocznij korzystanie z zestawu SDK Databricks

Usługa Databricks udostępnia zestawy SDK, które umożliwiają automatyzowanie operacji przy użyciu popularnych języków programowania, takich jak Python, Java i Go. W tej sekcji pokazano, jak rozpocząć korzystanie z zestawu SDK języka Python w celu tworzenia zadań usługi Databricks i zarządzania nimi.

Możesz użyć zestawu SDK usługi Databricks z notesu Databricks lub swojej lokalnej stacji roboczej. Jeśli używasz lokalnej maszyny programistycznej, upewnij się, że najpierw ukończysz Wprowadzenie do zestawu SDK Databricks dla języka Python.

Notatka

Jeśli programujesz z poziomu notesu usługi Databricks i używasz klastra korzystającego z środowiska Databricks Runtime 12.2 LTS i poniżej, najpierw musisz zainstalować zestaw SDK usługi Databricks dla języka Python. Zobacz Instalowanie lub uaktualnianie zestawu SDK usługi Databricks dla języka Python.

Przykład: tworzenie zadania przy użyciu zestawu SDK języka Python

Poniższy przykładowy kod notesu tworzy zadanie, które uruchamia istniejący notes. Pobiera ścieżkę istniejącego notatnika oraz powiązane ustawienia zadań w zestawie z monitami.

Najpierw upewnij się, że zainstalowano poprawną wersję zestawu SDK:

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

Następnie, aby utworzyć zadanie z wykorzystaniem notatnika, wykonaj następujące polecenie i odpowiedz na monity:

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

Uruchamianie zadania przy użyciu zestawu SDK języka Python

Istnieją trzy sposoby uruchamiania zadania podczas korzystania z interfejsu API.

  • Zaplanowane. Jeśli definicja zadania (w formacie JSON) zawiera harmonogram, podobnie jak w poniższym przykładzie, zadanie zostanie automatycznie uruchomione zgodnie z harmonogramem.

      "schedule": {
      "quartz_cron_expression": "46 0 9 * * ?",
      "timezone_id": "America/Los_Angeles",
      "pause_status": "UNPAUSED"
    },
    "max_concurrent_runs": 1,
    
  • Uruchomienie z run-now. Interfejs jobs.run_now API inicjuje wykonanie dla zadania, które już zostało utworzone.

  • Wyzwól za pomocą submit. Interfejs jobs.runs.submit API przyjmuje definicję zadania i wyzwala uruchomienie zadania.

    W programie submitzadanie nie jest zapisywane i nie jest widoczne w interfejsie użytkownika. Uruchamia się raz, a po zakończeniu przestaje istnieć jako zadanie.

    Ponieważ nie są one zapisywane, przesłane zadania nie mogą być automatycznie zoptymalizowane pod kątem obliczeń bezserwerowych w przypadku awarii. Jeśli zadanie zakończy się niepowodzeniem, możesz użyć klasycznego środowiska obliczeniowego, aby określić potrzeby obliczeniowe dla zadania. Możesz też użyć polecenia jobs.create i jobs.run_now, aby utworzyć i uruchomić zadanie.

Rozpocznij korzystanie z interfejsu API REST usługi Databricks

Notatka

Databricks zaleca używanie interfejsu wiersza polecenia Databricks i Databricks SDK, chyba że używasz języka programowania, który nie ma odpowiedniego Databricks SDK.

Poniższy przykład wysyła żądanie do interfejsu API REST usługi Databricks w celu pobrania szczegółów pojedynczego zadania. Przyjęto założenie, DATABRICKS_HOST że zmienne środowiskowe i DATABRICKS_TOKEN zostały ustawione zgodnie z opisem w temacie Wykonywanie uwierzytelniania osobistego tokenu dostępu.

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

Aby uzyskać informacje na temat korzystania z interfejsu API REST usługi Databricks, zobacz dokumentację interfejsu API REST usługi Databricks.

Wyświetlanie zadań jako kodu

W obszarze roboczym usługi Databricks możesz wyświetlić reprezentację zadania w formacie JSON, YAML lub Python.

  1. Na pasku bocznym obszaru roboczego usługi Azure Databricks kliknij pozycję Zadania i potoki i wybierz zadanie.

  2. Kliknij kebab po lewej stronie przycisku Uruchom teraz , a następnie kliknij pozycję Wyświetl jako kod:

    Wyświetl jako element menu kodu

  3. Kliknij pozycję YAML, Python lub JSON , aby wyświetlić zadanie jako kod w tym języku.

Czyszczenie

Aby usunąć wszystkie utworzone zadania, uruchom databricks jobs delete <job-id> z interfejsu wiersza polecenia usługi Databricks lub usuń zadanie bezpośrednio z interfejsu użytkownika obszaru roboczego usługi Databricks.

Następne kroki