Freigeben über


Databricks SDK für Python

Hinweis

Databricks empfiehlt Databricks Asset Bundles zum Erstellen, Entwickeln, Bereitstellen und Testen von Aufträgen und anderen Databricks-Ressourcen als Quellcode. Weitere Informationen finden Sie unter Was sind Databricks-Ressourcenbundles?

In diesem Artikel erfahren Sie, wie Sie Azure Databricks-Vorgänge automatisieren und die Entwicklung mit dem Databricks SDK für Python beschleunigen. Dieser Artikel ergänzt die Databricks SDK für Python Dokumentation zu Read The Docs und die Codebeispiele im Databricks SDK für Python-Repository in GitHub.

Hinweis

Das Databricks SDK für Python befindet sich in Beta und ist in Der Produktion in Ordnung.

Während des Betazeitraums empfiehlt Databricks, dass Sie eine Abhängigkeit von der spezifischen Nebenversion des Databricks SDK für Python anheften, von der Ihr Code abhängt. Beispielsweise können Sie Abhängigkeiten in Dateien wie requirements.txt für venv oder pyproject.toml und poetry.lock für Poetry anheften. Weitere Informationen zum Anheften von Abhängigkeiten finden Sie unter Virtuelle Umgebungen und Pakete für venv oder Installieren von Abhängigkeiten für Poetry.

Voraussetzungen

Sie können das Databricks SDK für Python in einem Azure Databricks-Notebook oder auf Ihrem lokalen Entwicklungscomputer verwenden.

Zur Verwendung des Databricks SDK für Python muss Ihr Entwicklungscomputer die folgenden Voraussetzungen erfüllen:

  • Die Azure Databricks-Authentifizierung ist konfiguriert.
  • Python 3.8 oder höher ist installiert. Für die Automatisierung von Azure Databricks-Computeressourcen empfiehlt Databricks, die Haupt- und Nebenversionen von Python zu installieren, die der auf Ihrer Azure Databricks-Zielcomputeressource installierten Version entsprechen. Die Beispiele in diesem Artikel basieren auf der Automatisierung von Clustern mit Databricks Runtime 13.3 LTS mit installiertem Python 3.10. Die richtige Databricks Runtime-Version Ihres Clusters finden Sie unter Versionshinweise zu Databricks Runtime-Versionen und -Kompatibilität.
  • Databricks empfiehlt, für jedes Python-Projekt, das Sie mit dem Databricks SDK für Python verwenden, eine virtuelle Python-Umgebung zu erstellen und zu aktivieren. Mit virtuellen Python-Umgebungen können Sie sicherstellen, dass Ihr Codeprojekt kompatible Versionen von Python und Python-Paketen verwendet (in diesem Fall das Paket mit dem Databricks SDK für Python). Weitere Informationen zu virtuellen Python-Umgebungen finden Sie unter venv oder Poetry.

Erste Schritte mit dem Databricks SDK für Python

In diesem Abschnitt wird beschrieben, wie Sie auf Ihrem lokalen Entwicklungscomputer mit der Verwendung des Databricks SDK für Python beginnen. Um das Databricks SDK für Python in einem Azure Databricks-Notebook zu verwenden, fahren Sie mit Verwenden des Databricks SDK für Python in einem Azure Databricks-Notebook fort.

  1. Installieren Sie auf Ihrem Entwicklungscomputer, auf dem die Azure Databricks-Authentifizierung bereits konfiguriert, Python bereits installiert und Ihre virtuelle Python-Umgebung bereits aktiviert ist, das databricks-sdk-Paket aus dem Python-Paketindex (PyPI) folgendermaßen:

    Venv

    Verwenden Sie pip, um das databricks-sdk-Paket zu installieren. (Bei einigen Systemen müssen Sie hier und im weiteren Verlauf möglicherweise pip3 durch pip ersetzen.)

    pip3 install databricks-sdk
    

    Poetry

    poetry add databricks-sdk
    

    Informationen zum Installieren einer bestimmten Version des databricks-sdk-Pakets, während sich das Databricks SDK für Python noch in der Betaversion befindet, finden Sie im Releaseverlauf des Pakets. Gehen Sie beispielsweise wie folgt vor, um Version 0.1.6 zu installieren:

    Venv

    pip3 install databricks-sdk==0.1.6
    

    Poetry

    poetry add databricks-sdk==0.1.6
    

    Führen Sie den folgenden Befehl aus, um ein Upgrade der vorhandenen Installation des Databricks SDK für Python auf die neueste Version durchzuführen:

    Venv

    pip3 install --upgrade databricks-sdk
    

    Poetry

    poetry add databricks-sdk@latest
    

    Führen Sie den folgenden Befehl aus, um die aktuelle Version und andere Details des Databricks SDK für Python anzuzeigen:

    Venv

    pip3 show databricks-sdk
    

    Poetry

    poetry show databricks-sdk
    
  2. Erstellen Sie in Ihrer virtuellen Python-Umgebung eine Python-Codedatei, die das Databricks SDK für Python importiert. Im folgenden Beispiel werden in der Datei main.py mit folgendem Inhalt einfach alle Cluster in Ihrem Azure Databricks-Arbeitsbereich aufgelistet:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    
    for c in w.clusters.list():
      print(c.cluster_name)
    
  3. Führen Sie Ihre Python-Codedatei aus, wobei Sie von einer Datei namens main.py ausgehen, indem Sie den Befehl python ausführen:

    Venv

    python3.10 main.py
    

    Poetry

    Wenn Sie sich in der Shell der virtuellen Umgebung befinden:

    python3.10 main.py
    

    Wenn Sie sich nicht in der Shell der virtuellen Umgebung befinden:

    poetry run python3.10 main.py
    

    Hinweis

    Wenn Sie keine Argumente im obigen w = WorkspaceClient()-Aufruf angeben, verwendet das Databricks SDK für Python den Standardprozess zur Durchführung der Azure Databricks-Authentifizierung. Informationen zum Überschreiben dieses Standardverhaltens finden Sie im folgenden Abschnitt zur Authentifizierung.

Authentifizieren des Databricks SDK für Python bei Ihrem Azure Databricks-Konto oder -Arbeitsbereich

In diesem Abschnitt wird beschrieben, wie Sie das Databricks SDK für Python von Ihrem lokalen Entwicklungscomputer auf Ihrem Azure Databricks-Konto oder -Arbeitsbereich authentifizieren. Um das Databricks SDK für Python in einem Azure Databricks-Notebook zu authentifizieren, fahren Sie mit Verwenden des Databricks SDK für Python in einem Azure Databricks-Notebook fort.

Das Databricks-SDK für Python implementiert den Standard für die einheitliche Databricks-Clientauthentifizierung, einen konsolidierten und konsistenten architektonischen und programmgesteuerten Ansatz für die Authentifizierung. Dieser Ansatz trägt dazu bei, die Einrichtung und Automatisierung der Authentifizierung mit Azure Databricks zentralisierter und vorhersagbarer zu gestalten. Er ermöglicht Ihnen, die Databricks-Authentifizierung einmal zu konfigurieren und diese Konfiguration dann für mehrere Databricks-Tools und -SDKs ohne weitere Änderungen an der Authentifizierungskonfiguration zu verwenden. Weitere Informationen, einschließlich umfassenderer Codebeispiele in Python, finden Sie unter Einheitliche Databricks-Clientauthentifizierung.

Hinweis

Das Databricks SDK für Python hat noch keine Authentifizierung mit von Azure verwalteten Identitäten implementiert.

Zu den verfügbaren Codierungsmustern zum Initialisieren der Databricks-Authentifizierung mit dem Databricks-SDK für Python gehören:

  • Verwenden Sie die Databricks-Standardauthentifizierung, indem Sie eine der folgenden Aktionen ausführen:

    • Erstellen oder identifizieren Sie ein benutzerdefiniertes Databricks-Konfigurationsprofil mit den erforderlichen Feldern für den Databricks-Zielauthentifizierungstyp. Legen Sie dann die DATABRICKS_CONFIG_PROFILE-Umgebungsvariable auf den Namen des benutzerdefinierten Konfigurationsprofils fest.
    • Legen Sie die erforderlichen Umgebungsvariablen für den Databricks-Zielauthentifizierungstyp fest.

    Instanziieren Sie dann z. B. ein WorkspaceClient-Objekt mit Databricks-Standardauthentifizierung wie folgt:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    # ...
    
  • Das harte Codieren der erforderlichen Felder wird unterstützt, aber nicht empfohlen, da dadurch vertrauliche Informationen in Ihrem Code verfügbar gemacht werden könnten, z. B. persönliche Azure Databricks-Zugriffstoken. Im folgenden Beispiel werden Azure Databricks-Host- und Zugriffstokenwerte für die Databricks-Tokenauthentifizierung hart codiert:

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

Siehe auch Authentifizierung in der Dokumentation zu Databricks SDK für Python.

Verwenden des Databricks SDK für Python in einem Azure Databricks-Notebook

Sie können die Funktionalität des Databricks SDK für Python über ein Azure Databricks-Notebook aufrufen, das über einen angefügten Azure Databricks-Cluster mit installiertem Databricks SDK für Python verfügt. Es ist auf allen Azure Databricks-Clustern bereits standardmäßig installiert, die Databricks Runtime 13.3 LTS oder höher verwenden. Für Azure Databricks-Cluster, die Databricks Runtime 12.2 LTS und darunter verwenden, müssen Sie zuerst das Databricks-SDK für Python installieren. Weitere Informationen finden Sie unter Schritt 1: Installieren oder Upgraden des Databricks SDK für Python.

Das Databricks-SDK für die Python-Version, das für eine bestimmte Version von Databricks Runtime standardmäßig installiert ist, finden Sie im Abschnitt Installierte Python-Bibliotheken in den Databricks Runtime-Versionshinweisen für diese Version.

Databricks empfiehlt, die neueste verfügbare Version des SDK von PiPy zu installieren, mindestens aber das Databricks-SDK für Python 0.6.0 oder höher zu installieren oder ein Upgrade darauf vorzunehmen, weil von Version 0.6.0 die standardmäßige Azure Databricks-Notebookauthentifizierung für alle Databricks-Runtime-Versionen verwendet wird.

Hinweis

Databricks Runtime 15.1 ist die erste Databricks-Runtime mit installierter Version des Databricks SDK für Python (0.20.0), die die Standard-Notebookauthentifizierung unterstützt, ohne dass ein Upgrade erforderlich ist.

In der folgenden Tabelle wird die Unterstützung der Notebookauthentifizierung für Databricks SDK für Python- und Databricks-Runtime-Versionen beschrieben:

SDK/DBR 10.4 LTS 11.3 LTS 12.3 LTS 13.3 LTS 14.3 LTS 15.1 und höher
0.1.7 und früher
0.1.10
0.6.0
0.20.0 und höher

Die standardmäßige Azure Databricks-Notebook-Authentifizierung basiert auf einem temporären persönlichen Azure Databricks-Zugriffstoken, das Azure Databricks automatisch im Hintergrund zur eigenen Verwendung generiert. Azure Databricks löscht dieses temporäre Token, wenn die Ausführung des Notebooks beendet wurde.

Wichtig

  • Die Standardauthentifizierung von Azure Databricks-Notebooks funktioniert nur auf dem Treiberknoten des Clusters und nicht auf einem der Worker- oder Executorknoten des Clusters.
  • Die Azure Databricks-Notebook-Authentifizierung funktioniert nicht mit Azure Databricks-Konfigurationsprofilen.

Falls Sie Azure Databricks-APIs auf Kontoebene aufrufen oder einen anderen Databricks-Authentifizierungstyp als die standardmäßige Databricks-Notebookauthentifizierung verwenden möchten, werden auch die folgenden Authentifizierungstypen unterstützt:

Authentication type Databricks SDK für Python-Versionen
OAuth-M2M-Authentifizierung 0.18.0 und höher
OAuth U2M-Authentifizierung (User-to-Machine) 0.19.0 und höher
Microsoft Entra ID-Dienstprinzipalauthentifizierung Alle Versionen
Azure CLI-Authentifizierung Alle Versionen
Authentifizierung mit persönlichen Databricks-Zugriffstoken Alle Versionen

Die Authentifizierung mit von Azure verwalteten Identitäten wird noch nicht unterstützt.

Schritt 1: Installieren oder Upgraden des Databricks SDK für Python

  1. Azure Databricks Python-Notebooks können das Databricks SDK für Python wie jede andere Python-Bibliothek verwenden. Um die Databricks SDK für Python-Bibliothek im angefügten Azure Databricks-Cluster zu installieren oder upzugraden, führen Sie den Magic-Befehl %pip aus einer Notebookzelle wie folgt aus:

    %pip install databricks-sdk --upgrade
    
  2. Nachdem Sie den Magic-Befehl %pip ausgeführt haben, müssen Sie Python neu starten, um die installierte oder upgegradete Bibliothek für das Notebook verfügbar zu machen. Führen Sie dazu den folgenden Befehl in einer Notebookzelle unmittelbar hinter der Zelle mit dem %pip-Magic-Befehl aus:

    dbutils.library.restartPython()
    
  3. Um die installierte Version des Databricks SDK für Python anzuzeigen, führen Sie den folgenden Befehl aus einer Notebookzelle aus:

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

Schritt 2: Ausführen des Codes

Erstellen Sie in Ihren Notebookzellen Python-Code, der das Databricks SDK für Python importiert und dann aufruft. Im folgenden Beispiel wird die standardmäßige Azure Databricks-Notebookauthentifizierung verwendet, um alle Cluster in Ihrem Azure Databricks-Arbeitsbereich auflisten zu können:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

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

Wenn Sie diese Zelle ausführen, wird eine Liste der Namen aller verfügbaren Cluster in Ihrem Azure Databricks-Arbeitsbereich angezeigt.

Informationen zur Verwendung eines anderen Azure Databricks-Authentifizierungstyps finden Sie unter Azure Databricks-Authentifizierungsmethoden. Klicken Sie auf den entsprechenden Link, um weitere technische Details anzuzeigen.

Verwenden von Databricks Utilities

Sie können die Referenz zu Databricks-Hilfsprogrammen (dbutils) über das Databricks SDK für Python, das auf Ihrem lokalen Entwicklungscomputer ausgeführt wird, oder in einem Azure Databricks-Notebook aufrufen.

  • Von Ihrem lokalen Entwicklungscomputer aus hat Databricks Utilities nur Zugriff auf die Befehlsgruppen dbutils.fs, dbutils.secrets, dbutils.widgets und dbutils.jobs.
  • Von einem Azure Databricks-Notebook aus, das an einen Azure Databricks-Cluster angefügt ist, hat Databricks Utilities Zugriff auf alle verfügbaren Databricks Utilities-Befehlsgruppen, nicht nur dbutils.fs, dbutils.secrets und dbutils.widgets. Darüber hinaus ist die dbutils.notebook-Befehlsgruppe auf zwei Befehlsebenen beschränkt, z. B dbutils.notebook.run oder dbutils.notebook.exit.

Verwenden Sie dbutils in WorkspaceClient, um Databricks Utilities entweder von Ihrem lokalen Entwicklungscomputer oder einem Azure Databricks-Notebook aufzurufen. In diesem Codebeispiel wird die standardmäßige Azure Databricks-Notebookauthentifizierung verwendet, um dbutils innerhalb von WorkspaceClient aufzurufen, um die Pfade aller Objekte im DBFS-Stamm des Arbeitsbereichs auflisten zu können.

from databricks.sdk import WorkspaceClient

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

for f in d:
  print(f.path)

Alternativ können Sie dbutils direkt aufrufen. Sie können jedoch nur die standardmäßige Azure Databricks-Notebookauthentifizierung verwenden. Dieses Codebeispiel ruft dbutils direkt auf, um alle Objekte im DBFS-Stamm des Arbeitsbereichs aufzulisten.

from databricks.sdk.runtime import *

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

for f in d:
  print(f.path)

Um auf Unity Catalog-Volumes zuzugreifen, verwenden Sie files in WorkspaceClient. Weitere Informationen finden Sie unter Verwalten von Dateien in Unity Catalog-Volumes. Sie können dbutils nicht alleine oder innerhalb von WorkspaceClient verwenden, um auf Volumes zuzugreifen.

Weitere Informationen finden Sie unter Interaction with dbutils (Interaktion mit dbutils).

Codebeispiele

Die folgenden Codebeispiele veranschaulichen die Verwendung des Databricks SDK für Python zum Erstellen und Löschen von Clustern, Ausführen von Aufträgen und Auflisten von Gruppen auf Kontoebene. Diese Codebeispiele verwenden die standardmäßige Azure Databricks-Notebookauthentifizierung. Ausführliche Informationen zur standardmäßigen Azure Databricks-Notebookauthentifizierung finden Sie unter Verwenden des Databricks SDK für Python in einem Azure Databricks-Notebook. Ausführliche Informationen zur Standardauthentifizierung außerhalb von Notebooks finden Sie unter Authentifizieren des Databricks SDK für Python mit Ihrem Azure Databricks-Konto oder -Arbeitsbereich.

Weitere Beispiele finden Sie in den Beispielen im Databricks SDK für Python-Repository auf GitHub. Weitere Informationen:

Erstellen eines Clusters

In diesem Codebeispiel wird ein Cluster mit der angegebenen Databricks Runtime-Version und dem angegebenen Clusterknotentyp erstellt. Dieser Cluster umfasst einen Worker, und der Cluster wird nach 15 Minuten Leerlauf automatisch beendet.

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

Dauerhaftes Löschen eines Clusters

In diesem Codebeispiel wird der Cluster mit der angegebenen Cluster-ID dauerhaft aus dem Arbeitsbereich gelöscht.

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)

Erstellen eines Auftrags

In diesem Codebeispiel wird ein Azure Databricks-Auftrag erstellt, der das angegebene Notebook auf dem angegebenen Cluster ausführt. Bei Ausführung des Codes werden der Pfad des vorhandenen Notebooks, die ID des vorhandenen Clusters und die zugehörigen Auftragseinstellungen vom Benutzer am Terminal abgerufen.

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

Erstellen eines Auftrags, der serverloses Computing verwendet

Im folgenden Beispiel wird ein Auftrag erstellt, der serverloses Computing für Aufträge verwendet:

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

Verwalten von Dateien in Unity Catalog-Volumes

In diesem Codebeispiel werden verschiedene Aufrufe von files-Funktionen innerhalb von WorkspaceClient den Zugriff auf ein Unity Catalog-Volume veranschaulicht.

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)

Auflisten von Gruppen auf Kontoebene

In diesem Codebeispiel werden die Anzeigenamen für alle verfügbaren Gruppen im Azure Databricks-Konto aufgelistet.

from databricks.sdk import AccountClient

a = AccountClient()

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

Testen

Verwenden Sie Python-Testframeworks wie pytest, um Ihren Code zu testen. Um Ihren Code unter simulierten Bedingungen zu testen, ohne Azure Databricks-REST-API-Endpunkte aufzurufen oder den Status Ihrer Azure Databricks-Konten oder -Arbeitsbereiche zu ändern, können Sie Python-Modellbibliotheken wie unittest.mock verwenden.

Tipp

Databricks Labs bietet ein Pytest-Plug-In , um Integrationstests mit Databricks und einem Pylint-Plug-In zu vereinfachen, um die Codequalität sicherzustellen.

Die folgende benannte helpers.py Beispieldatei enthält eine create_cluster Funktion, die Informationen zum neuen Cluster zurückgibt:

# 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

Die folgende Datei mit dem Namen main.py , die die create_cluster Funktion aufruft:

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

Die folgende Datei mit dem Namen test_helpers.py testet, ob die create_cluster Funktion die erwartete Antwort zurückgibt. Anstatt einen Cluster im Zielarbeitsbereich zu erstellen, simuliert dieser Test ein WorkspaceClient Objekt, definiert die Einstellungen des Pseudoobjekts und übergibt dann das Pseudoobjekt an die create_cluster Funktion. Der Test überprüft dann, ob die Funktion die erwartete ID des neuen simulierten Clusters zurückgibt.

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

Führen Sie zum Durchführen dieses Tests den Befehl pytest aus dem Stamm des Codeprojekts aus, der ähnliche Testergebnisse wie die Folgenden erzeugen sollte:

$ 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 ==========================

Zusätzliche Ressourcen

Weitere Informationen finden Sie unter: