Udostępnij za pośrednictwem


Zestaw SDK usługi Databricks dla języka Python

Uwaga

Usługa Databricks zaleca pakiety zasobów usługi Databricks do tworzenia, opracowywania, wdrażania i testowania zadań oraz innych zasobów usługi Databricks jako kodu źródłowego. Zobacz Co to są pakiety zasobów usługi Databricks?.

Z tego artykułu dowiesz się, jak zautomatyzować operacje usługi Azure Databricks i przyspieszyć programowanie przy użyciu 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

Zestaw SDK usługi Databricks dla języka Python jest 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 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). Aby uzyskać więcej informacji na temat środowisk wirtualnych języka Python, zobacz venv lub Poezja.

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
    

    Poezja

    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
    

    Poezja

    poetry add databricks-sdk==0.1.6
    

    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
    

    Poezja

    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
    

    Poezja

    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
    

    Poezja

    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. Jest on instalowany domyślnie 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 zapoznać się z wersją zestawu SDK usługi Databricks dla języka Python zainstalowaną dla określonej wersji środowiska Databricks Runtime, zobacz sekcję Zainstalowane biblioteki języka Python w informacjach o wersji środowiska Databricks Runtime dla tej wersji.

Usługa Databricks zaleca zainstalowanie najnowszej dostępnej wersji zestawu SDK z witryny, ale co najmniej instalacja lub uaktualnienie do zestawu SDK usługi Databricks dla języka Python 0.6.0 lub nowszego, ponieważ domyślne uwierzytelnianie notesu usługi Azure Databricks jest używane przez wersję 0.6.0 lub nowszą w przypadku wszystkich wersji środowiska Databricks Runtime.

Uwaga

Środowisko Databricks Runtime 15.1 to pierwsze środowisko Databricks Runtime, które ma zainstalowaną wersję zestawu SDK usługi Databricks dla języka Python (0.20.0), która obsługuje domyślne uwierzytelnianie notesu bez konieczności uaktualniania.

W poniższej tabeli przedstawiono obsługę uwierzytelniania notesu dla zestawu SDK usługi Databricks dla wersji języka Python i środowiska Databricks Runtime:

Zestaw SDK/DBR 10.4 LTS 11.3 LTS 12.3 LTS 13.3 LTS 14.3 LTS 15.1 i nowsze
0.1.7 i poniżej
0.1.10
0.6.0
0.20.0 i nowsze

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.
  • Uwierzytelnianie notesu usługi Azure Databricks nie działa z profilami konfiguracji usługi Azure Databricks.

Jeśli chcesz wywołać interfejsy API na poziomie konta usługi Azure Databricks lub chcesz użyć typu uwierzytelniania usługi Databricks innego niż domyślne uwierzytelnianie notesu usługi Databricks, obsługiwane są również następujące typy uwierzytelniania:

Typ uwierzytelniania 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.

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

Aby uzyskać dostęp do woluminów wykazu aparatu Unity, użyj polecenia files w programie WorkspaceClient. Zobacz Zarządzanie plikami w woluminach wykazu aparatu Unity. Do uzyskiwania dostępu do woluminów nie można używać dbutils samodzielnie ani w obrębie WorkspaceClient .

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

W poniższym przykładzie utworzono zadanie, które używa bezserwerowych obliczeń dla zadań:

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

Zarządzanie plikami w woluminach wykazu aparatu Unity

W tym przykładzie kodu pokazano różne wywołania funkcji w celu WorkspaceClient uzyskania dostępu do files woluminu wykazu aparatu Unity.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

# Define volume, folder, and file details.
catalog            = 'main'
schema             = 'default'
volume             = 'my-volume'
volume_path        = f"/Volumes/{catalog}/{schema}/{volume}" # /Volumes/main/default/my-volume
volume_folder      = 'my-folder'
volume_folder_path = f"{volume_path}/{volume_folder}" # /Volumes/main/default/my-volume/my-folder
volume_file        = 'data.csv'
volume_file_path   = f"{volume_folder_path}/{volume_file}" # /Volumes/main/default/my-volume/my-folder/data.csv
upload_file_path   = './data.csv'

# Create an empty folder in a volume.
w.files.create_directory(volume_folder_path)

# Upload a file to a volume.
with open(upload_file_path, 'rb') as file:
  file_bytes = file.read()
  binary_data = io.BytesIO(file_bytes)
  w.files.upload(volume_file_path, binary_data, overwrite = True)

# List the contents of a volume.
for item in w.files.list_directory_contents(volume_path):
  print(item.path)

# List the contents of a folder in a volume.
for item in w.files.list_directory_contents(volume_folder_path):
  print(item.path)

# Print the contents of a file in a volume.
resp = w.files.download(volume_file_path)
print(str(resp.contents.read(), encoding='utf-8'))

# Delete a file from a volume.
w.files.delete(volume_file_path)

# Delete a folder from a volume.
w.files.delete_directory(volume_folder_path)

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.

Napiwek

Usługa Databricks Labs udostępnia wtyczkę pytest, która upraszcza testowanie integracji z usługą Databricks i wtyczką pylint w celu zapewnienia jakości kodu.

Poniższy przykładowy plik o nazwie helpers.py zawiera 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

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: