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
, venv
lub 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 venv
programu ) 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.
- 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.
- Aby użyć zestawu SDK usługi Databricks dla języka Python na komputerze deweloperskim lokalnym, wykonaj kroki opisane w tej sekcji.
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.
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ąpieniepip3
ciągiempip
, 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
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)
Uruchom plik kodu w języku Python, zakładając, że plik o nazwie
main.py
, uruchamiającpython
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() # ...
- Utwórz lub zidentyfikuj niestandardowy profil konfiguracji usługi Databricks z wymaganymi polami dla docelowego typu uwierzytelniania usługi Databricks. Następnie ustaw zmienną
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
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
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()
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.fs
grup poleceń ,dbutils.secrets
,dbutils.widgets
idbutils.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.secrets
idbutils.widgets
.dbutils.notebook
Ponadto grupa poleceń jest ograniczona tylko do dwóch poziomów poleceń, na przykładdbutils.notebook.run
lubdbutils.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:
Dokumentacja zestawu SDK usługi Databricks dla języka Python
Dokumentacja interfejsów API obszaru roboczego usługi Databricks