Udostępnij przez


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 Databricks dla języka Python zamieszczoną na Read The Docs oraz przykłady kodu w repozytorium zestawu SDK Databricks dla języka Python na GitHubie.

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 firma Databricks zaleca przypięcie zależności od określonej pomniejszej wersji SDK Databricks dla języka Python, od której zależy Państwa 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 Środowiska wirtualne i pakiety dla venv, lub Instalowanie zależności dla Poetry.

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ę, zapoznaj się z wersjami informacji o wersji Databricks Runtime i zgodnością dla środowiska Databricks Runtime Twojego 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 twoim komputerze deweloperskim ze skonfigurowanym uwierzytelnianiem Azure Databricks, z już zainstalowanym Pythonem i aktywowanym środowiskiem wirtualnym Python, zainstaluj pakiet databricks-sdk (i jego zależności) z Python Package Index (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 na pip, tutaj i wszędzie).

    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 oraz inne szczegóły dotyczące pakietu SDK dla języka Python w Databricks, 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. Wykonaj plik kodu w języku Python, zakładając, że plik o nazwie main.py, używając polecenia python.

    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 usługi Databricks , skonsolidowane i spójne podejście architektoniczne i programowe do uwierzytelniania. Takie podejście pomaga w bardziej scentralizowanym i przewidywalnym konfigurowaniu oraz automatyzacji uwierzytelniania z użyciem usługi Azure Databricks. 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 Databricks unified authentication (Ujednolicone uwierzytelnianie w usłudze Databricks).

Uwaga

Zestaw SDK usługi Databricks dla języka Python nie zaimplementował jeszcze uwierzytelniania za pomocą 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ą środowiskową DATABRICKS_CONFIG_PROFILE na nazwę niestandardowego profilu konfiguracji.
    • Ustaw wymagane zmienne środowiskowe dla docelowego typu uwierzytelniania usługi Databricks.

    Następnie utwórz, na przykład, obiekt WorkspaceClient z domyślnym uwierzytelnianiem 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 także Uwierzytelnianie w dokumentacji SDK usługi Databricks dla Python.

Korzystanie z SDK Databricks dla języka Python z notatnika 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 PiPy, ale co najmniej instalację lub uaktualnienie do wersji Databricks SDK for Python 0.6.0 lub wyższej, ponieważ domyślne uwierzytelnianie w notatnikach Azure Databricks jest używane od wersji 0.6.0 we wszystkich wersjach środowiska Databricks Runtime.

Uwaga

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

W poniższej tabeli przedstawiono obsługę uwierzytelniania notatników dla Databricks SDK dla języka Python oraz wersji środowiska Databricks Runtime.

Zestaw SDK/Środowisko uruchomieniowe usługi Databricks 10.4 Długoterminowe Wsparcie (LTS) 11.3 długoterminowe wsparcie (LTS) 12.3 LTS 13.3 LTS 14.3 Długoterminowe Wsparcie (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 w usłudze Azure Databricks opiera się na tymczasowym osobistym tokenie dostępu, który Azure Databricks generuje automatycznie w tle do własnego użytku. Usługa Azure Databricks usuwa ten token tymczasowy po zakończeniu działania notatnika.

Ważne

  • Domyślne uwierzytelnianie notesu usługi Azure Databricks działa tylko na węźle sterownika klastra i nie działa na żadnym z węzłów roboczych ani wykonawczych klastra.
  • Uwierzytelnianie notebooków Azure Databricks nie działa z profilami konfiguracji Azure Databricks.
  • Uwierzytelnianie notesu usługi Azure Databricks nie działa z usługą Usługi Kontenerów 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 CLI platformy Azure Wszystkie wersje
Uwierzytelnianie osobistego tokenu dostępu usługi Databricks Wszystkie wersje

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

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

Uwaga

Zestaw SDK usługi Databricks dla języka Python jest instalowany domyślnie we wszystkich klastrach usługi Azure Databricks korzystających z środowiska Databricks Runtime 13.3 LTS lub nowszego.

  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ć bibliotekę SDK Databricks dla języka Python w dołączonym klastrze Azure Databricks, uruchom polecenie magiczne z komórki notesu w następujący sposób:

    %pip install databricks-sdk --upgrade
    
  2. Po uruchomieniu polecenia magic %pip, należy ponownie uruchomić Pythona, aby zainstalowana lub uaktualniona biblioteka była dostępna w notatniku. Aby to zrobić, uruchom następujące polecenie z komórki notesu bezpośrednio po komórce z magicznym poleceniem %pip.

    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 notatnika:

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

Krok 2. Uruchamianie kodu

W komórkach notesu utwórz kod Pythona importujący i wywołujący SDK Databricks dla Pythona. W poniższym przykładzie użyto domyślnej metody uwierzytelniania notebooka Azure Databricks, aby wyświetlić listę wszystkich klastrów w Twoim obszarze roboczym 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 autoryzacji i kliknij odpowiedni link, aby uzyskać dodatkowe szczegóły techniczne.

Użyj Narzędzi Usługi Databricks

Możesz użyć Narzędzi usługi Databricks z zestawu SDK Databricks dla kodu w języku Python uruchomionego na lokalnej maszynie deweloperskiej lub z poziomu notatnika usługi Azure Databricks.

  • Z lokalnej maszyny deweloperskiej narzędzia Databricks Utilities mają dostęp tylko do grup poleceń dbutils.fs, dbutils.secrets, dbutils.widgets i 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ń usługi Databricks Utilities, ale grupa poleceń dbutils.notebook jest ograniczona tylko do dwóch poziomów poleceń, na przykład dbutils.notebook.run lub dbutils.notebook.exit.

Aby wywołać narzędzia Databricks z lokalnego środowiska deweloperskiego lub notesu usługi Azure Databricks, użyj dbutils w WorkspaceClient. W tym przykładzie kodu użyto domyślnego uwierzytelniania w notesie usługi Azure Databricks, aby wywołać dbutils w WorkspaceClient i wyświetlić listę ścieżek wszystkich obiektów w root 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 bezpośrednio wywołać dbutils. Można jednak używać tylko domyślnego uwierzytelniania notatnika usługi Azure Databricks. Ten przykład kodu wywołuje dbutils bezpośrednio, aby wyświetlić listę wszystkich obiektów w katalogu głównym 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 katalogu Unity, użyj files w WorkspaceClient. Zobacz Zarządzanie plikami w woluminach Unity Catalog. Nie można użyć dbutils samodzielnie ani w WorkspaceClient, aby uzyskać dostęp do woluminów.

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 notatnika Azure Databricks. Aby uzyskać szczegółowe informacje na temat domyślnego uwierzytelniania notesów usługi Azure Databricks, zobacz Używanie zestawu SDK Databricks dla języka Python z notesu Azure Databricks. Aby uzyskać szczegółowe informacje na temat domyślnego uwierzytelniania poza notesami, zobacz Jak uwierzytelnić zestaw SDK dla Python w swojej usłudze Azure Databricks, korzystając z konta lub obszaru roboczego.

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 węzeł roboczy, a klaster zostanie automatycznie wyłą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)

Utwórz zadanie

Ten przykładowy kod tworzy zadanie usługi Azure Databricks, które uruchamia określony notes w określonym klastrze. Podczas wykonywania kodu, pobiera on ścieżkę istniejącego notesu, istniejący identyfikator klastra oraz powiązane ustawienia zadania od użytkownika korzystającego z 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/someone@example.com/MyNotebook",
      source = Source("WORKSPACE")
      ),
      task_key = "MyTask",
   )
  ]
)

Zarządzanie plikami w woluminach katalogu Unity Catalog

W tym przykładzie kodu pokazano różne wywołania files funkcji w ramach WorkspaceClient w celu uzyskania dostępu do woluminu Unity Catalog. Aby uzyskać więcej informacji, zobacz pełną dokumentację zestawu SDK.

Zestaw SDK usługi Databricks dla języka Python udostępnia dwa sposoby przekazywania i pobierania plików. upload_from i download_to są zalecane dla lokalnych ścieżek plików. upload i download są zalecane dla danych w interfejsach pamięci i strumieniowych. Wszystkie cztery metody obsługują pliki o maksymalnym rozmiarze obsługiwanym przez bazowy magazyn w chmurze w przypadku korzystania z zestawu SDK w wersji 0.72.0 lub nowszej.

Jeśli konto usługi Azure Storage ma włączoną zaporę, istnieje limit rozmiaru pliku o rozmiarze 5 GB.

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 (method 1: recommended when your data is in a local file path)
w.files.upload_from(volume_file_path, upload_file_path, overwrite=True)

# Upload a file to a volume (method 2: recommended when your data is in-memory, or not a local file)
with open(upload_file_path, "rb") as f:
    w.files.upload(volume_file_path, io.BytesIO(f.read()), 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)

# Download a file from a volume (method 1: recommended when data needs to be stored in a local file; fastest)
w.files.download_to(volume_file_path, local_download_path)

# Download a file from a volume (method 2: recommended when you need the data in-memory)
resp = w.files.download(volume_file_path)

chunk_size = 8192
with resp.contents as f:
    while True:
        chunk = f.read(chunk_size)
        if not chunk:
            break
        print(f"Read {len(chunk)} characters")

# 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.

Uwaga

W programie AccountClient nie jest obsługiwane uwierzytelnianie specyficzne dla notesu, dlatego należy ustawić poświadczenia w konstruktorze, aby uruchomić przykład w notesie.

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.

Wskazówka

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 mockuje WorkspaceClient obiekt, definiuje mockowane ustawienia obiektu, a następnie przekazuje mockowany 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 ==========================

Rozwiązywanie problemów

W tej sekcji opisano rozwiązania typowych problemów z zestawem SDK usługi Databricks dla języka Python.

Aby zgłosić problemy lub inne opinie, utwórz zgłoszenie GitHub dla zestawu SDK Databricks dla języka Python.

Błąd: Nie można przeanalizować odpowiedzi

Jeśli podczas próby użycia zestawu SDK usługi Databricks dla języka Python wystąpi następujący błąd, prawie zawsze wskazuje to problem z konfiguracją uwierzytelniania.

Error: unable to parse response. This is likely a bug in the Databricks SDK for Python or the underlying REST API.

Jeśli wystąpi ten błąd, sprawdź następujące kwestie:

  • Upewnij się, że host usługi Databricks jest poprawnie ustawiony.
  • Upewnij się, że metoda uwierzytelniania ma wymagane uprawnienia do operacji interfejsu API, którą próbujesz wykonać.
  • Jeśli znajdujesz się za firmową zaporą, upewnij się, że nie blokuje ani nie przekierowuje ruchu interfejsu API.

Częstą przyczyną tego błędu jest przekierowanie zestawu SDK na stronę logowania, której zestaw SDK nie potrafi przetworzyć. Dzieje się tak zwykle w przypadku próby uzyskania dostępu do obszaru roboczego z włączonym łączem prywatnym, skonfigurowanego bez dostępu do publicznego Internetu, z innej sieci niż ta, do której należy punkt końcowy VPC.

Aby uzyskać więcej informacji, zobacz:

Dodatkowe zasoby

Aby uzyskać więcej informacji, zobacz: