Zestaw SDK usługi Databricks dla języka Python

Z tego artykułu dowiesz się, jak zautomatyzować operacje na kontach, obszarach roboczych i powiązanych zasobach usługi Azure Databricks za pomocą zestawu SDK usługi Databricks dla języka Python. Ten artykuł uzupełnia dokumentację zestawu SDK usługi Databricks dla języka Python dotyczącą artykułu Read The Docs i przykładów kodu w repozytorium Zestawu SDK usługi Databricks dla języka Python w usłudze GitHub.

Uwaga

Ta funkcja jest dostępna w wersji beta i jest w porządku do użycia w środowisku produkcyjnym.

W okresie beta usługa Databricks zaleca przypięcie zależności od określonej pomocniczej wersji zestawu SDK usługi Databricks dla języka Python, od której zależy twój kod. Na przykład można przypiąć zależności w plikach, takich jak requirements.txt , venvlub pyproject.toml i poetry.lock dla poezji. Aby uzyskać więcej informacji na temat przypinania zależności, zobacz Virtual Environments and Packages for , lub Installing dependencies for Poetry (Środowiska wirtualne i pakiety dla venvprogramu ) lub Installing dependencies for Poetry (Instalowanie zależności dla poezji).

Zanim rozpoczniesz

Zestaw SDK usługi Databricks dla języka Python można używać z poziomu notesu usługi Azure Databricks lub z lokalnej maszyny deweloperów.

Przed rozpoczęciem korzystania z zestawu SDK usługi Databricks dla języka Python maszyna dewelopercza musi mieć następujące elementy:

  • Skonfigurowane uwierzytelnianie usługi Azure Databricks.
  • Zainstalowano środowisko Python w wersji 3.8 lub nowszej. Aby zautomatyzować zasoby obliczeniowe usługi Azure Databricks, usługa Databricks zaleca zainstalowanie głównych i pomocniczych wersji języka Python, które są zgodne z zainstalowanym w docelowym zasobie obliczeniowym usługi Azure Databricks. W tym artykule przedstawiono przykłady automatyzacji klastrów przy użyciu środowiska Databricks Runtime 13.3 LTS, który ma zainstalowany język Python 3.10. Aby uzyskać poprawną wersję, zobacz Wersje informacji o wersji środowiska Databricks Runtime i zgodność dla wersji środowiska Databricks Runtime klastra.
  • Usługa Databricks zaleca utworzenie i aktywowanie środowiska wirtualnego języka Python dla każdego projektu kodu języka Python używanego z zestawem SDK usługi Databricks dla języka Python. Środowiska wirtualne języka Python pomagają upewnić się, że projekt kodu korzysta z zgodnych wersji pakietów python i Python (w tym przypadku zestawu SDK usługi Databricks dla języka Python). W tym artykule wyjaśniono, jak używać venv lub Potetry dla środowisk wirtualnych języka Python.

Tworzenie środowiska wirtualnego języka Python za pomocą polecenia venv

  1. W terminalu ustawionym na katalog główny projektu kodu języka Python uruchom następujące polecenie. To polecenie nakazuje venv używanie języka Python 3.10 dla środowiska wirtualnego, a następnie tworzy pliki pomocnicze środowiska wirtualnego w ukrytym katalogu o nazwie .venv w katalogu głównym projektu kodu języka Python.

    # Linux and macOS
    python3.10 -m venv ./.venv
    
    # Windows
    python3.10 -m venv .\.venv
    
  2. Użyj venv polecenia , aby aktywować środowisko wirtualne. Zapoznaj się z dokumentacją venv , aby użyć poprawnego polecenia na podstawie systemu operacyjnego i typu terminalu. Na przykład w systemie macOS z systemem zsh:

    source ./.venv/bin/activate
    

    Będzie wiadomo, że środowisko wirtualne jest aktywowane, gdy nazwa środowiska wirtualnego (na przykład .venv) jest wyświetlana w nawiasach tuż przed monitem terminalu.

    Aby dezaktywować środowisko wirtualne w dowolnym momencie, uruchom polecenie deactivate.

    Będzie wiadomo, że środowisko wirtualne jest dezaktywowane, gdy nazwa środowiska wirtualnego nie jest już wyświetlana w nawiasach tuż przed monitem terminalu.

Przejdź do sekcji Wprowadzenie do zestawu SDK usługi Databricks dla języka Python.

Tworzenie środowiska wirtualnego za pomocą poezji

  1. Zainstaluj poezję, jeśli jeszcze tego nie zrobiono.

  2. W terminalu ustawionym na katalog główny projektu kodu języka Python uruchom następujące polecenie, aby zainicjować poetry projekt kodu języka Python dla poezji.

    poetry init
    
  3. Poezja wyświetla kilka monitów o ukończenie. Żadne z tych monitów nie jest specyficzne dla zestawu SDK usługi Databricks dla języka Python. Aby uzyskać informacje o tych monitach, zobacz init.

  4. Po zakończeniu monitów poezja dodaje pyproject.toml plik do projektu języka Python. Aby uzyskać informacje o pyproject.toml pliku, zobacz plik pyproject.toml.

  5. Po ustawieniu terminalu na katalog główny projektu kodu języka Python uruchom następujące polecenie. To polecenie nakazuje odczytanie poetrypyproject.toml pliku, zainstalowanie i rozwiązanie zależności, utworzenie poetry.lock pliku w celu zablokowania zależności i utworzenie środowiska wirtualnego.

    poetry install
    
  6. W terminalu ustawionym na katalog główny projektu kodu języka Python uruchom następujące polecenie, aby poinstruować poetry aktywowanie środowiska wirtualnego i wprowadzenie powłoki.

    poetry shell
    

    Będziesz wiedzieć, że środowisko wirtualne jest aktywowane, a powłoka jest wprowadzana, gdy nazwa środowiska wirtualnego jest wyświetlana w nawiasach tuż przed monitem terminalu.

    Aby dezaktywować środowisko wirtualne i zamknąć powłokę w dowolnym momencie, uruchom polecenie exit.

    Będziesz wiedzieć, że powłoka została zakończona, gdy nazwa środowiska wirtualnego nie będzie już wyświetlana w nawiasach tuż przed monitem terminalu.

    Aby uzyskać więcej informacji na temat tworzenia środowisk wirtualnych poezji i zarządzania nimi, zobacz Zarządzanie środowiskami.

Wprowadzenie do zestawu SDK usługi Databricks dla języka Python

W tej sekcji opisano, jak rozpocząć pracę z zestawem SDK usługi Databricks dla języka Python na komputerze lokalnym deweloperskim. Aby użyć zestawu SDK usługi Databricks dla języka Python z poziomu notesu usługi Azure Databricks, przejdź do sekcji Używanie zestawu SDK usługi Databricks dla języka Python z notesu usługi Azure Databricks.

  1. Na maszynie deweloperów ze skonfigurowanym uwierzytelnianiem usługi Azure Databricks, już zainstalowanym językiem Python, a twoje środowisko wirtualne języka Python zostało już aktywowane, zainstaluj pakiet databricks-sdk (i jego zależności) z poziomu indeksu pakietów języka Python (PyPI), w następujący sposób:

    Venv

    Użyj polecenia pip , aby zainstalować databricks-sdk pakiet. (W niektórych systemach może być konieczne zastąpienie pip3 ciągiem pip, tutaj i w całym systemie).

    pip3 install databricks-sdk
    

    Poezji

    poetry add databricks-sdk
    

    Aby zainstalować określoną wersję pakietu, gdy zestaw SDK usługi Databricks dla języka Python jest w wersji databricks-sdk beta, zobacz historię wydania pakietu. Na przykład aby zainstalować wersję 0.1.6:

    Venv

    pip3 install databricks-sdk==0.1.6
    

    Poezji

    poetry add databricks-sdk==0.1.6
    

    Napiwek

    Aby uaktualnić istniejącą instalację zestawu SDK usługi Databricks dla języka Python do najnowszej wersji, uruchom następujące polecenie:

    Venv

    pip3 install --upgrade databricks-sdk
    

    Poezji

    poetry add databricks-sdk@latest
    

    Aby wyświetlić bieżący Version i inne szczegóły zestawu SDK usługi Databricks dla pakietu języka Python, uruchom następujące polecenie:

    Venv

    pip3 show databricks-sdk
    

    Poezji

    poetry show databricks-sdk
    
  2. W środowisku wirtualnym języka Python utwórz plik kodu języka Python, który importuje zestaw SDK usługi Databricks dla języka Python. Poniższy przykład w pliku o nazwie o następującej main.py zawartości zawiera po prostu listę wszystkich klastrów w obszarze roboczym usługi Azure Databricks:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    
    for c in w.clusters.list():
      print(c.cluster_name)
    
  3. Uruchom plik kodu w języku Python, zakładając, że plik o nazwie main.py, uruchamiając python polecenie :

    Venv

    python3.10 main.py
    

    Poezji

    Jeśli jesteś w powłoce środowiska wirtualnego:

    python3.10 main.py
    

    Jeśli nie jesteś w powłoce środowiska wirtualnego:

    poetry run python3.10 main.py
    

    Uwaga

    Nie ustawiając żadnych argumentów w poprzednim wywołaniu na w = WorkspaceClient(), zestaw SDK usługi Databricks dla języka Python używa domyślnego procesu próby wykonania uwierzytelniania usługi Azure Databricks. Aby zastąpić to zachowanie domyślne, zobacz następującą sekcję uwierzytelniania .

Uwierzytelnianie zestawu SDK usługi Databricks dla języka Python przy użyciu konta lub obszaru roboczego usługi Azure Databricks

W tej sekcji opisano sposób uwierzytelniania zestawu SDK usługi Databricks dla języka Python z lokalnej maszyny deweloperów do konta lub obszaru roboczego usługi Azure Databricks. Aby uwierzytelnić zestaw SDK usługi Databricks dla języka Python z poziomu notesu usługi Azure Databricks, przejdź do sekcji Używanie zestawu SDK usługi Databricks dla języka Python z notesu usługi Azure Databricks.

Zestaw SDK usługi Databricks dla języka Python implementuje ujednolicony standard uwierzytelniania klienta usługi Databricks, skonsolidowane i spójne podejście architektoniczne i programowe do uwierzytelniania. Takie podejście pomaga w konfigurowaniu i automatyzowaniu uwierzytelniania za pomocą usługi Azure Databricks bardziej scentralizowanego i przewidywalnego. Umożliwia ona skonfigurowanie uwierzytelniania usługi Databricks raz, a następnie użycie tej konfiguracji w wielu narzędziach i zestawach SDK usługi Databricks bez dalszych zmian konfiguracji uwierzytelniania. Aby uzyskać więcej informacji, w tym bardziej kompletne przykłady kodu w języku Python, zobacz Ujednolicone uwierzytelnianie klienta usługi Databricks.

Uwaga

Zestaw SDK usługi Databricks dla języka Python nie zaimplementował jeszcze uwierzytelniania tożsamości zarządzanych platformy Azure.

Niektóre z dostępnych wzorców kodowania do inicjowania uwierzytelniania usługi Databricks za pomocą zestawu SDK usługi Databricks dla języka Python obejmują:

  • Użyj domyślnego uwierzytelniania usługi Databricks, wykonując jedną z następujących czynności:

    • Utwórz lub zidentyfikuj niestandardowy profil konfiguracji usługi Databricks z wymaganymi polami dla docelowego typu uwierzytelniania usługi Databricks. Następnie ustaw zmienną DATABRICKS_CONFIG_PROFILE środowiskową na nazwę niestandardowego profilu konfiguracji.
    • Ustaw wymagane zmienne środowiskowe dla docelowego typu uwierzytelniania usługi Databricks.

    Następnie utwórz wystąpienie obiektu z domyślnym uwierzytelnianiem WorkspaceClient usługi Databricks w następujący sposób:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    # ...
    
  • Kodowanie na stałe wymaganych pól jest obsługiwane, ale nie jest zalecane, ponieważ ryzykuje ujawnienie poufnych informacji w kodzie, takich jak osobiste tokeny dostępu usługi Azure Databricks. Poniższy przykład koduje twarde wartości hosta i tokenu dostępu usługi Azure Databricks dla uwierzytelniania tokenu usługi Databricks:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient(
      host  = 'https://...',
      token = '...'
    )
    # ...
    

Zobacz również artykuł Authentication in the Databricks SDK for Python documentation (Uwierzytelnianie w zestawie SDK usługi Databricks dla języka Python).

Używanie zestawu SDK usługi Databricks dla języka Python z notesu usługi Azure Databricks

Zestaw SDK usługi Databricks dla języka Python można wywołać z poziomu notesu usługi Azure Databricks z dołączonym klastrem usługi Azure Databricks z zainstalowanym zestawem SDK usługi Databricks dla języka Python. Zestaw SDK usługi Databricks dla języka Python jest już zainstalowany we wszystkich klastrach usługi Azure Databricks korzystających z środowiska Databricks Runtime 13.3 LTS lub nowszego. W przypadku klastrów usługi Azure Databricks korzystających z środowiska Databricks Runtime 12.2 LTS i poniżej należy najpierw zainstalować zestaw SDK usługi Databricks dla języka Python. Zobacz Krok 1. Instalowanie lub uaktualnianie zestawu SDK usługi Databricks dla języka Python.

Aby wyświetlić numer wersji zestawu SDK usługi Databricks dla języka Python, który jest instalowany domyślnie dla określonej wersji środowiska Databricks Runtime, zobacz sekcję "Zainstalowane biblioteki języka Python" w informacjach o wersji środowiska Databricks Runtime dla tej wersji środowiska Databricks Runtime.

Zestaw SDK usługi Databricks dla języka Python w wersji 0.6.0 lub nowszej używa domyślnego uwierzytelniania notesu usługi Azure Databricks. Domyślne uwierzytelnianie notesu usługi Azure Databricks opiera się na tymczasowym osobistym tokenie dostępu usługi Azure Databricks generowanym automatycznie w tle na potrzeby własnego użytku. Usługa Azure Databricks usuwa ten token tymczasowy po zatrzymaniu działania notesu.

Ważne

Domyślne uwierzytelnianie notesu usługi Azure Databricks działa tylko w węźle sterownika klastra, a nie w żadnym z węzłów procesu roboczego lub funkcji wykonawczej klastra.

Środowisko Databricks Runtime 13.3 LTS i nowsze obsługują domyślne uwierzytelnianie notesu usługi Azure Databricks za pomocą zestawu SDK usługi Databricks dla języka Python w wersji 0.1.7 lub nowszej. Środowisko Databricks Runtime 10.4 LTS i nowsze obsługują domyślne uwierzytelnianie notesu usługi Azure Databricks za pomocą zestawu SDK usługi Databricks dla języka Python w wersji 0.1.10 lub nowszej. Jednak usługa Databricks zaleca zainstalowanie lub uaktualnienie do zestawu SDK usługi Databricks dla języka Python 0.6.0 lub nowszego w celu zapewnienia maksymalnej zgodności z domyślnym uwierzytelnianiem notesu usługi Azure Databricks niezależnie od wersji środowiska Databricks Runtime.

Musisz zainstalować lub uaktualnić zestaw SDK usługi Databricks dla języka Python w klastrze usługi Azure Databricks, jeśli chcesz wywołać interfejsy API na poziomie konta usługi Azure Databricks lub jeśli chcesz użyć typu uwierzytelniania usługi Azure Databricks innego niż domyślne uwierzytelnianie notesu usługi Azure Databricks w następujący sposób:

Authentication type Zestaw SDK usługi Databricks dla wersji języka Python
Uwierzytelnianie OAuth między maszynami (M2M) 0.18.0 i nowsze
Uwierzytelnianie typu użytkownik-komputer (U2M) OAuth 0.19.0 i nowsze
Uwierzytelnianie jednostki usługi Microsoft Entra ID Wszystkie wersje
Uwierzytelnianie interfejsu wiersza polecenia platformy Azure Wszystkie wersje
Uwierzytelnianie osobistego tokenu dostępu usługi Databricks Wszystkie wersje

Uwierzytelnianie tożsamości zarządzanych platformy Azure nie jest jeszcze obsługiwane.

Uwierzytelnianie notesu usługi Azure Databricks nie działa z profilami konfiguracji usługi Azure Databricks.

Krok 1. Instalowanie lub uaktualnianie zestawu SDK usługi Databricks dla języka Python

  1. Notesy języka Python usługi Azure Databricks mogą używać zestawu SDK usługi Databricks dla języka Python, podobnie jak w przypadku każdej innej biblioteki języka Python. Aby zainstalować lub uaktualnić zestaw SDK usługi Databricks dla języka Python w dołączonym klastrze usługi Azure Databricks, uruchom %pip polecenie magic z komórki notesu w następujący sposób:

    %pip install databricks-sdk --upgrade
    
  2. Po uruchomieniu %pip polecenia magic należy ponownie uruchomić język Python, aby udostępnić zainstalowaną lub uaktualnioną bibliotekę notesowi. W tym celu uruchom następujące polecenie z komórki notesu bezpośrednio po komórce za %pip pomocą polecenia magic:

    dbutils.library.restartPython()
    
  3. Aby wyświetlić zainstalowaną wersję zestawu SDK usługi Databricks dla języka Python, uruchom następujące polecenie w komórce notesu:

    %pip show databricks-sdk | grep -oP '(?<=Version: )\S+'
    

Krok 2. Uruchamianie kodu

W komórkach notesu utwórz kod języka Python, który importuje, a następnie wywołuje zestaw SDK usługi Databricks dla języka Python. W poniższym przykładzie użyto domyślnego uwierzytelniania notesu usługi Azure Databricks, aby wyświetlić listę wszystkich klastrów w obszarze roboczym usługi Azure Databricks:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

for c in w.clusters.list():
  print(c.cluster_name)

Po uruchomieniu tej komórki zostanie wyświetlona lista nazw wszystkich dostępnych klastrów w obszarze roboczym usługi Azure Databricks.

Aby użyć innego typu uwierzytelniania usługi Azure Databricks, zobacz Obsługiwane typy uwierzytelniania usługi Azure Databricks i kliknij odpowiedni link, aby uzyskać dodatkowe szczegóły techniczne.

Korzystanie z narzędzi usługi Databricks

Możesz wywołać odwołanie do narzędzi usługi Databricks (dbutils) z zestawu SDK usługi Databricks dla kodu języka Python uruchomionego na lokalnej maszynie deweloperzej lub z poziomu notesu usługi Azure Databricks.

  • Z lokalnej maszyny deweloperów narzędzia Databricks Utilities mają dostęp tylko do dbutils.fsgrup poleceń , dbutils.secrets, dbutils.widgetsi dbutils.jobs .
  • W notesie usługi Azure Databricks dołączonym do klastra usługi Azure Databricks program Databricks Utilities ma dostęp do wszystkich dostępnych grup poleceń narzędzi usługi Databricks, a nie tylko dbutils.fs, dbutils.secretsi dbutils.widgets. dbutils.notebook Ponadto grupa poleceń jest ograniczona tylko do dwóch poziomów poleceń, na przykład dbutils.notebook.run lub dbutils.notebook.exit.

Aby wywołać narzędzia usługi Databricks z lokalnej maszyny deweloperów lub notesu usługi Azure Databricks, użyj polecenia dbutils w programie WorkspaceClient. W tym przykładzie kodu użyto domyślnego uwierzytelniania notesu usługi Azure Databricks w celu wywołania dbutils elementu w WorkspaceClient celu wyświetlenia listy ścieżek wszystkich obiektów w katalogu głównym systemu plików DBFS obszaru roboczego.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
d = w.dbutils.fs.ls('/')

for f in d:
  print(f.path)

Alternatywnie możesz wywołać dbutils połączenie bezpośrednio. Można jednak używać tylko domyślnego uwierzytelniania notesu usługi Azure Databricks. Ten przykładowy kod wywołuje bezpośrednie wywołania dbutils , aby wyświetlić listę wszystkich obiektów w katalogu głównym systemu plików DBFS obszaru roboczego.

from databricks.sdk.runtime import *

d = dbutils.fs.ls('/')

for f in d:
  print(f.path)

Nie można używać dbutils jej samodzielnie ani w celu WorkspaceClient uzyskania dostępu do woluminów wykazu aparatu Unity. Zamiast tego należy użyć elementu files w pliku WorkspaceClient. Ten przykładowy kod wywołuje metodę files w programie w WorkspaceClient celu wydrukowania zawartości określonego pliku w określonym woluminie.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

resp = w.files.download('/Volumes/main/default/my-volume/sales.csv')
print(str(resp.contents.read(), encoding='utf-8'))

Zobacz też Interakcja z narzędziami dbutils.

Przykłady kodu

W poniższych przykładach kodu pokazano, jak używać zestawu SDK usługi Databricks dla języka Python do tworzenia i usuwania klastrów, uruchamiania zadań i wyświetlania listy grup na poziomie konta. Te przykłady kodu używają domyślnego uwierzytelniania notesu usługi Azure Databricks. Aby uzyskać szczegółowe informacje na temat domyślnego uwierzytelniania notesu usługi Azure Databricks, zobacz Use the Databricks SDK for Python from an Azure Databricks notebook (Używanie zestawu SDK usługi Databricks dla języka Python z notesu usługi Azure Databricks). Aby uzyskać szczegółowe informacje na temat domyślnego uwierzytelniania poza notesami, zobacz Uwierzytelnianie zestawu SDK usługi Databricks dla języka Python przy użyciu konta lub obszaru roboczego usługi Azure Databricks.

Aby uzyskać dodatkowe przykłady kodu, zobacz przykłady w repozytorium Zestawu SDK usługi Databricks dla języka Python w usłudze GitHub. Zobacz też:

Tworzenie klastra

Ten przykładowy kod tworzy klaster z określoną wersją środowiska Databricks Runtime i typem węzła klastra. Ten klaster ma jeden proces roboczy, a klaster zostanie automatycznie zakończony po upływie 15 minut bezczynności.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

print("Attempting to create cluster. Please wait...")

c = w.clusters.create_and_wait(
  cluster_name             = 'my-cluster',
  spark_version            = '12.2.x-scala2.12',
  node_type_id             = 'Standard_DS3_v2',
  autotermination_minutes  = 15,
  num_workers              = 1
)

print(f"The cluster is now ready at " \
      f"{w.config.host}#setting/clusters/{c.cluster_id}/configuration\n")

Trwałe usuwanie klastra

Ten przykład kodu trwale usuwa klaster z określonym identyfikatorem klastra z obszaru roboczego.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

c_id = input('ID of cluster to delete (for example, 1234-567890-ab123cd4): ')

w.clusters.permanent_delete(cluster_id = c_id)

Tworzenie zadania

Ten przykładowy kod tworzy zadanie usługi Azure Databricks, które uruchamia określony notes w określonym klastrze. W miarę uruchamiania kodu pobiera on ścieżkę istniejącego notesu, istniejący identyfikator klastra i powiązane ustawienia zadania od użytkownika w terminalu.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.jobs import Task, NotebookTask, Source

w = WorkspaceClient()

job_name            = input("Some short name for the job (for example, my-job): ")
description         = input("Some short description for the job (for example, My job): ")
existing_cluster_id = input("ID of the existing cluster in the workspace to run the job on (for example, 1234-567890-ab123cd4): ")
notebook_path       = input("Workspace path of the notebook to run (for example, /Users/someone@example.com/my-notebook): ")
task_key            = input("Some key to apply to the job's tasks (for example, my-key): ")

print("Attempting to create the job. Please wait...\n")

j = w.jobs.create(
  name = job_name,
  tasks = [
    Task(
      description = description,
      existing_cluster_id = existing_cluster_id,
      notebook_task = NotebookTask(
        base_parameters = dict(""),
        notebook_path = notebook_path,
        source = Source("WORKSPACE")
      ),
      task_key = task_key
    )
  ]
)

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

Tworzenie zadania korzystającego z obliczeń bezserwerowych

Ważne

Bezserwerowe obliczenia dla przepływów pracy są w publicznej wersji zapoznawczej. Aby uzyskać informacje na temat uprawnień i włączania, zobacz Włączanie bezserwerowej publicznej wersji zapoznawczej obliczeń.

Poniższy przykład tworzy zadanie, które używa bezserwerowych obliczeń dla przepływów pracy:

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.jobs import NotebookTask, Source, Task

w = WorkspaceClient()

j = w.jobs.create(
  name = "My Serverless Job",
  tasks = [
    Task(
      notebook_task = NotebookTask(
      notebook_path = "/Users/user@databricks.com/MyNotebook",
      source = Source("WORKSPACE")
      ),
      task_key = "MyTask",
   )
  ]
)

Wyświetlanie listy grup na poziomie konta

Ten przykładowy kod zawiera listę nazw wyświetlanych dla wszystkich dostępnych grup na koncie usługi Azure Databricks.

from databricks.sdk import AccountClient

a = AccountClient()

for g in a.groups.list():
  print(g.display_name)

Testowanie

Aby przetestować kod, użyj platform testowych języka Python, takich jak pytest. Aby przetestować kod w symulowanych warunkach bez wywoływania punktów końcowych interfejsu API REST usługi Azure Databricks lub zmiany stanu kont lub obszarów roboczych usługi Azure Databricks, użyj bibliotek pozorowania języka Python, takich jak unittest.mock.

Na przykład, biorąc pod uwagę następujący plik o nazwie helpers.py zawierającej funkcję zwracającą create_cluster informacje o nowym klastrze:

# helpers.py

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.compute import ClusterDetails

def create_cluster(
  w: WorkspaceClient,
  cluster_name:            str,
  spark_version:           str,
  node_type_id:            str,
  autotermination_minutes: int,
  num_workers:             int
) -> ClusterDetails:
  response = w.clusters.create(
    cluster_name            = cluster_name,
    spark_version           = spark_version,
    node_type_id            = node_type_id,
    autotermination_minutes = autotermination_minutes,
    num_workers             = num_workers
  )
  return response

I biorąc pod uwagę następujący plik o nazwie main.py , który wywołuje create_cluster funkcję:

# main.py

from databricks.sdk import WorkspaceClient
from helpers import *

w = WorkspaceClient()

# Replace <spark-version> with the target Spark version string.
# Replace <node-type-id> with the target node type string.
response = create_cluster(
  w = w,
  cluster_name            = 'Test Cluster',
  spark_version           = '<spark-version>',
  node_type_id            = '<node-type-id>',
  autotermination_minutes = 15,
  num_workers             = 1
)

print(response.cluster_id)

Poniższy plik o nazwie test_helpers.py testuje, czy create_cluster funkcja zwraca oczekiwaną odpowiedź. Zamiast tworzyć klaster w docelowym obszarze roboczym, ten test wyśmiewa WorkspaceClient obiekt, definiuje wyśmiewane ustawienia obiektu, a następnie przekazuje pozorowany obiekt do create_cluster funkcji. Następnie test sprawdza, czy funkcja zwraca oczekiwany identyfikator nowego wyśmiewanego klastra.

# test_helpers.py

from databricks.sdk import WorkspaceClient
from helpers import *
from unittest.mock import create_autospec # Included with the Python standard library.

def test_create_cluster():
  # Create a mock WorkspaceClient.
  mock_workspace_client = create_autospec(WorkspaceClient)

  # Set the mock WorkspaceClient's clusters.create().cluster_id value.
  mock_workspace_client.clusters.create.return_value.cluster_id = '123abc'

  # Call the actual function but with the mock WorkspaceClient.
  # Replace <spark-version> with the target Spark version string.
  # Replace <node-type-id> with the target node type string.
  response = create_cluster(
    w = mock_workspace_client,
    cluster_name            = 'Test Cluster',
    spark_version           = '<spark-version>',
    node_type_id            = '<node-type-id>',
    autotermination_minutes = 15,
    num_workers             = 1
  )

  # Assert that the function returned the mocked cluster ID.
  assert response.cluster_id == '123abc'

Aby uruchomić ten test, uruchom pytest polecenie z katalogu głównego projektu kodu, które powinno wygenerować wyniki testów podobne do następujących:

$ pytest
=================== test session starts ====================
platform darwin -- Python 3.12.2, pytest-8.1.1, pluggy-1.4.0
rootdir: <project-rootdir>
collected 1 item

test_helpers.py . [100%]
======================== 1 passed ==========================

Dodatkowe zasoby

Aby uzyskać więcej informacji, zobacz: