Share via


Databricks SDK voor Python

In dit artikel leert u hoe u bewerkingen automatiseert in Azure Databricks-accounts, werkruimten en gerelateerde resources met de Databricks SDK voor Python. Dit artikel is een aanvulling op de Databricks SDK voor Python-documentatie over De Docs en de codevoorbeelden in de Databricks SDK voor Python-opslagplaats in GitHub.

Notitie

Deze functie is in bèta en is in orde om te gebruiken in productie.

Tijdens de bètaperiode raadt Databricks u aan een afhankelijkheid vast te maken van de specifieke secundaire versie van de Databricks SDK voor Python waarvan uw code afhankelijk is. U kunt bijvoorbeeld afhankelijkheden vastmaken in bestanden zoals requirements.txt voor venv, of pyproject.toml voor poetry.lock Poëzie. Zie Virtual Environments and Packages for , or Installing dependencies for Poetry (Afhankelijkheden voor poëzie installeren) voor venvmeer informatie over het vastmaken van afhankelijkheden.

Voordat u begint

U kunt de Databricks SDK voor Python gebruiken vanuit een Azure Databricks-notebook of vanaf uw lokale ontwikkelcomputer.

Voordat u begint met het gebruik van de Databricks SDK voor Python, moet uw ontwikkelcomputer over het volgende beschikken:

  • Azure Databricks-verificatie geconfigureerd.
  • Python 3.8 of hoger geïnstalleerd. Voor het automatiseren van Azure Databricks-rekenresources raadt Databricks aan dat u de primaire en secundaire versies van Python hebt geïnstalleerd die overeenkomen met de versie die is geïnstalleerd op uw Azure Databricks-rekenresource. De voorbeelden van dit artikel zijn afhankelijk van het automatiseren van clusters met Databricks Runtime 13.3 LTS, waarop Python 3.10 is geïnstalleerd. Zie de releaseversies van Databricks Runtime en compatibiliteit voor de Databricks Runtime-versie van uw cluster voor de juiste versie.
  • Databricks raadt u aan een virtuele Python-omgeving te maken en te activeren voor elk Python-codeproject dat u gebruikt met de Databricks SDK voor Python. Virtuele Python-omgevingen helpen ervoor te zorgen dat uw codeproject compatibele versies van Python- en Python-pakketten gebruikt (in dit geval de Databricks SDK voor Python-pakket). In dit artikel wordt uitgelegd hoe u venv of Potetry gebruikt voor virtuele Python-omgevingen.

Een virtuele Python-omgeving maken met venv

  1. Voer vanuit de terminal die is ingesteld op de hoofdmap van uw Python-codeproject de volgende opdracht uit. Met deze opdracht krijgt u opdracht venv om Python 3.10 te gebruiken voor de virtuele omgeving en maakt u vervolgens de ondersteunende bestanden van de virtuele omgeving in een verborgen map met de naam .venv in de hoofdmap van uw Python-codeproject.

    # Linux and macOS
    python3.10 -m venv ./.venv
    
    # Windows
    python3.10 -m venv .\.venv
    
  2. Gebruik venv dit om de virtuele omgeving te activeren. Zie de venv-documentatie voor de juiste opdracht die u kunt gebruiken, op basis van uw besturingssysteem en terminaltype. Bijvoorbeeld: in macOS wordt het volgende uitgevoerd zsh:

    source ./.venv/bin/activate
    

    U weet dat uw virtuele omgeving wordt geactiveerd wanneer de naam van de virtuele omgeving (bijvoorbeeld .venv) tussen haakjes wordt weergegeven vlak voor de terminalprompt.

    Als u de virtuele omgeving op elk gewenst moment wilt deactiveren, voert u de opdracht deactivateuit.

    U weet dat uw virtuele omgeving is gedeactiveerd wanneer de naam van de virtuele omgeving niet meer tussen haakjes wordt weergegeven vlak voor de terminalprompt.

Ga verder met Aan de slag met de Databricks SDK voor Python.

Een virtuele omgeving maken met Poëzie

  1. Installeer Poëzie als u dit nog niet hebt gedaan.

  2. Voer vanuit de terminal die is ingesteld op de hoofdmap van uw Python-codeproject de volgende opdracht uit om poetry uw Python-codeproject te initialiseren voor Poëzie.

    poetry init
    
  3. Poëzie geeft verschillende aanwijzingen weer die u moet voltooien. Geen van deze prompts is specifiek voor de Databricks SDK voor Python. Zie init voor meer informatie over deze prompts.

  4. Nadat u de prompts hebt voltooid, voegt Poëzie een pyproject.toml bestand toe aan uw Python-project. Zie het bestand pyproject.toml voor meer informatie over het pyproject.toml bestand.

  5. Als uw terminal nog steeds is ingesteld op de hoofdmap van uw Python-codeproject, voert u de volgende opdracht uit. Met deze opdracht verwijst poetry u naar het lezen van het pyproject.toml bestand, het installeren en oplossen van afhankelijkheden, het maken van een poetry.lock bestand om de afhankelijkheden te vergrendelen en ten slotte een virtuele omgeving te maken.

    poetry install
    
  6. Voer vanuit de terminal die is ingesteld op de hoofdmap van uw Python-codeproject de volgende opdracht uit om de virtuele omgeving te activeren en de shell in te poetry voeren.

    poetry shell
    

    U weet dat uw virtuele omgeving is geactiveerd en dat de shell wordt ingevoerd wanneer de naam van de virtuele omgeving tussen haakjes wordt weergegeven vlak voor de terminalprompt.

    Als u de virtuele omgeving wilt deactiveren en de shell wilt afsluiten, voert u de opdracht exituit.

    U weet dat u de shell hebt afgesloten wanneer de naam van de virtuele omgeving niet meer tussen haakjes wordt weergegeven vlak voor de terminalprompt.

    Zie Omgevingen beheren voor meer informatie over het maken en beheren van virtuele poëzieomgevingen.

Aan de slag met de Databricks SDK voor Python

In deze sectie wordt beschreven hoe u aan de slag gaat met de Databricks SDK voor Python vanaf uw lokale ontwikkelcomputer. Als u de Databricks SDK voor Python wilt gebruiken vanuit een Azure Databricks-notebook, gaat u verder met de Databricks SDK voor Python vanuit een Azure Databricks-notebook.

  1. Installeer op uw ontwikkelcomputer waarvoor Azure Databricks-verificatie is geconfigureerd, Python al is geïnstalleerd en uw virtuele Python-omgeving al is geactiveerd het databricks-sdk-pakket (en de bijbehorende afhankelijkheden) van de Python Package Index (PyPI), als volgt:

    Venv

    Gebruik pip dit om het databricks-sdk pakket te installeren. (Op sommige systemen moet u mogelijk hier en overal vervangen door pip3pip.)

    pip3 install databricks-sdk
    

    Poëzie

    poetry add databricks-sdk
    

    Zie de releasegeschiedenis van het pakket om een specifieke versie van het databricks-sdk pakket te installeren terwijl de Databricks SDK voor Python zich in de bètaversie bevindt. Als u bijvoorbeeld versie 0.1.6wilt installeren:

    Venv

    pip3 install databricks-sdk==0.1.6
    

    Poëzie

    poetry add databricks-sdk==0.1.6
    

    Tip

    Als u een bestaande installatie van het Databricks SDK-pakket voor Python wilt upgraden naar de nieuwste versie, voert u de volgende opdracht uit:

    Venv

    pip3 install --upgrade databricks-sdk
    

    Poëzie

    poetry add databricks-sdk@latest
    

    Voer de volgende opdracht uit om de Databricks SDK voor de huidige Version en andere details van het Python-pakket weer te geven:

    Venv

    pip3 show databricks-sdk
    

    Poëzie

    poetry show databricks-sdk
    
  2. Maak in uw virtuele Python-omgeving een Python-codebestand waarmee de Databricks SDK voor Python wordt geïmporteerd. In het volgende voorbeeld, in een bestand met de naam main.py met de volgende inhoud, worden alle clusters in uw Azure Databricks-werkruimte weergegeven:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    
    for c in w.clusters.list():
      print(c.cluster_name)
    
  3. Voer uw Python-codebestand uit, ervan uitgaande van een bestand met de naam main.py, door de opdracht uit te python voeren:

    Venv

    python3.10 main.py
    

    Poëzie

    Als u zich in de shell van de virtuele omgeving bevindt:

    python3.10 main.py
    

    Als u zich niet in de shell van de virtuele omgeving bevindt:

    poetry run python3.10 main.py
    

    Notitie

    Door geen argumenten in de voorgaande aanroep in te w = WorkspaceClient()stellen, gebruikt de Databricks SDK voor Python het standaardproces voor het uitvoeren van Azure Databricks-verificatie. Als u dit standaardgedrag wilt overschrijven, raadpleegt u de volgende verificatiesectie .

De Databricks SDK voor Python verifiëren met uw Azure Databricks-account of -werkruimte

In deze sectie wordt beschreven hoe u de Databricks SDK voor Python kunt verifiëren vanaf uw lokale ontwikkelcomputer naar uw Azure Databricks-account of -werkruimte. Als u de Databricks SDK voor Python wilt verifiëren vanuit een Azure Databricks-notebook, gaat u verder met de Databricks SDK voor Python vanuit een Azure Databricks-notebook.

De Databricks SDK voor Python implementeert de geïntegreerde verificatiestandaard van de Databricks-client, een geconsolideerde en consistente architectuur en programmatische benadering van verificatie. Deze aanpak helpt bij het instellen en automatiseren van verificatie met Azure Databricks gecentraliseerder en voorspelbaarder. Hiermee kunt u Databricks-verificatie eenmaal configureren en deze configuratie vervolgens gebruiken voor meerdere Databricks-hulpprogramma's en SDK's zonder verdere verificatieconfiguratiewijzigingen. Zie voor meer informatie, waaronder meer volledige codevoorbeelden in Python, geïntegreerde verificatie voor Databricks-clients.

Notitie

De Databricks SDK voor Python heeft nog geen verificatie van door Azure beheerde identiteiten geïmplementeerd.

Enkele van de beschikbare coderingspatronen voor het initialiseren van Databricks-verificatie met de Databricks SDK voor Python zijn:

  • Gebruik databricks-standaardverificatie door een van de volgende handelingen uit te voeren:

    • Maak of identificeer een aangepast Databricks-configuratieprofiel met de vereiste velden voor het doelverificatietype Databricks. Stel vervolgens de DATABRICKS_CONFIG_PROFILE omgevingsvariabele in op de naam van het aangepaste configuratieprofiel.
    • Stel de vereiste omgevingsvariabelen in voor het doelverificatietype Databricks.

    Maak vervolgens als volgt een instantie van een WorkspaceClient object met databricks-standaardverificatie:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    # ...
    
  • Het hard coderen van de vereiste velden wordt ondersteund, maar wordt niet aanbevolen, omdat het risico loopt dat gevoelige informatie in uw code wordt weergegeven, zoals persoonlijke toegangstokens van Azure Databricks. In het volgende voorbeeld worden azure Databricks-host- en toegangstokenwaarden vastgelegd voor databricks-tokenverificatie:

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

Zie ook verificatie in de Databricks SDK voor Python-documentatie.

De Databricks SDK voor Python gebruiken vanuit een Azure Databricks-notebook

U kunt de Databricks SDK voor Python-functionaliteit aanroepen vanuit een Azure Databricks-notebook met een gekoppeld Azure Databricks-cluster waarop de Databricks SDK voor Python is geïnstalleerd. De Databricks SDK voor Python is al geïnstalleerd op alle Azure Databricks-clusters die Databricks Runtime 13.3 LTS of hoger gebruiken. Voor Azure Databricks-clusters die Databricks Runtime 12.2 LTS en hieronder gebruiken, moet u eerst de Databricks SDK voor Python installeren. Zie stap 1: De Databricks SDK voor Python installeren of upgraden.

Als u het versienummer van de Databricks SDK voor Python wilt zien dat standaard is geïnstalleerd voor een specifieke versie van Databricks Runtime, raadpleegt u de sectie Geïnstalleerde Python-bibliotheken van de Releaseopmerkingen van Databricks Runtime voor die Databricks Runtime-versie.

Databricks SDK voor Python 0.6.0 en hoger maakt gebruik van standaardverificatie voor Azure Databricks-notebooks. Standaardverificatie van Azure Databricks-notebooks is afhankelijk van een tijdelijk persoonlijk Azure Databricks-toegangstoken dat azure Databricks automatisch op de achtergrond genereert voor eigen gebruik. Azure Databricks verwijdert dit tijdelijke token nadat het notebook niet meer actief is.

Belangrijk

Standaardverificatie van Azure Databricks-notebooks werkt alleen op het stuurprogrammaknooppunt van het cluster en niet op een van de werk- of uitvoerknooppunten van het cluster.

Databricks Runtime 13.3 LTS en hoger biedt ondersteuning voor standaardverificatie van Azure Databricks-notebooks met Databricks SDK voor Python 0.1.7 of hoger geïnstalleerd. Databricks Runtime 10.4 LTS en hoger biedt ondersteuning voor standaardverificatie van Azure Databricks-notebooks met Databricks SDK voor Python 0.1.10 of hoger geïnstalleerd. Databricks raadt u echter aan om databricks SDK voor Python 0.6.0 of hoger te installeren of bij te werken voor maximale compatibiliteit met standaardverificatie van Azure Databricks-notebooks, ongeacht de Databricks Runtime-versie.

U moet de Databricks SDK voor Python installeren of upgraden op het Azure Databricks-cluster als u API's op accountniveau van Azure Databricks wilt aanroepen of als u een ander verificatietype voor Azure Databricks wilt gebruiken dan standaardverificatie voor Azure Databricks-notebooks, als volgt:

Authentication type Databricks SDK voor Python-versies
OAuth-verificatie van machine-naar-machine (M2M) 0.18.0 en hoger
OAuth-verificatie van gebruiker naar machine (U2M) 0.19.0 en hoger
Verificatie van Microsoft Entra-ID Service-principal Alle versies
Azure CLI-verificatie Alle versies
Verificatie van persoonlijke toegangstokens van Databricks Alle versies

Verificatie van door Azure beheerde identiteiten wordt nog niet ondersteund.

Verificatie van Azure Databricks-notebook werkt niet met Azure Databricks-configuratieprofielen.

Stap 1: De Databricks SDK voor Python installeren of upgraden

  1. Azure Databricks Python-notebooks kunnen de Databricks SDK voor Python gebruiken, net als elke andere Python-bibliotheek. Als u de Databricks SDK voor Python-bibliotheek wilt installeren of upgraden op het gekoppelde Azure Databricks-cluster, voert u de %pip magic-opdracht uit vanuit een notebookcel als volgt:

    %pip install databricks-sdk --upgrade
    
  2. Nadat u de %pip magic-opdracht hebt uitgevoerd, moet u Python opnieuw starten om de geïnstalleerde of bijgewerkte bibliotheek beschikbaar te maken voor het notebook. Voer hiervoor de volgende opdracht uit vanuit een notebookcel direct na de cel met de %pip magic-opdracht:

    dbutils.library.restartPython()
    
  3. Als u de geïnstalleerde versie van de Databricks SDK voor Python wilt weergeven, voert u de volgende opdracht uit vanuit een notebookcel:

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

Stap 2: Uw code uitvoeren

Maak in uw notebookcellen Python-code die de Databricks SDK voor Python importeert en vervolgens aanroept. In het volgende voorbeeld wordt standaardverificatie van Azure Databricks-notebook gebruikt om alle clusters in uw Azure Databricks-werkruimte weer te geven:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

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

Wanneer u deze cel uitvoert, wordt er een lijst weergegeven met de namen van alle beschikbare clusters in uw Azure Databricks-werkruimte.

Als u een ander verificatietype voor Azure Databricks wilt gebruiken, raadpleegt u Ondersteunde Azure Databricks-verificatietypen en klikt u op de bijbehorende koppeling voor aanvullende technische details.

Databricks Utilities gebruiken

U kunt databricks Utilities (dbutils) aanroepen vanuit de Databricks SDK voor Python-code die wordt uitgevoerd op uw lokale ontwikkelcomputer of vanuit een Azure Databricks-notebook.

  • Vanaf uw lokale ontwikkelcomputer heeft Databricks Utilities alleen toegang tot de dbutils.fs, dbutils.secretsen dbutils.widgetsdbutils.jobs opdrachtgroepen.
  • Vanuit een Azure Databricks-notebook dat is gekoppeld aan een Azure Databricks-cluster, heeft Databricks Utilities toegang tot alle beschikbare Databricks Utilities-opdrachtgroepen, niet alleen dbutils.fs, dbutils.secretsen dbutils.widgets. Daarnaast is de dbutils.notebook opdrachtgroep beperkt tot slechts twee niveaus van opdrachten, bijvoorbeeld dbutils.notebook.run of dbutils.notebook.exit.

Als u Databricks Utilities wilt aanroepen vanaf uw lokale ontwikkelcomputer of een Azure Databricks-notebook, gebruikt u dbutils binnen WorkspaceClient. In dit codevoorbeeld wordt standaardverificatie van Azure Databricks-notebook gebruikt om de paden van alle objecten in de DBFS-hoofdmap van de werkruimte weer te dbutilsWorkspaceClient geven.

from databricks.sdk import WorkspaceClient

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

for f in d:
  print(f.path)

U kunt ook rechtstreeks bellen dbutils . U bent echter beperkt tot het gebruik van standaardverificatie van Azure Databricks-notebooks. Dit codevoorbeeld roept dbutils rechtstreeks aan om alle objecten in de DBFS-hoofdmap van de werkruimte weer te geven.

from databricks.sdk.runtime import *

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

for f in d:
  print(f.path)

U kunt alleen of binnen geen toegang krijgen tot Unity Catalog-volumes.dbutilsWorkspaceClient Gebruik in plaats daarvan files binnen WorkspaceClient. In dit codevoorbeeld wordt filesWorkspaceClient de inhoud van het opgegeven bestand in het opgegeven volume afgedrukt.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

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

Zie ook Interactie met dbutils.

Codevoorbeelden

In de volgende codevoorbeelden ziet u hoe u de Databricks SDK voor Python gebruikt om clusters te maken en te verwijderen, taken uit te voeren en groepen op accountniveau weer te geven. In deze codevoorbeelden wordt standaardverificatie voor Azure Databricks-notebooks gebruikt. Zie De Databricks SDK voor Python gebruiken vanuit een Azure Databricks-notebook voor meer informatie over de standaardverificatie van Azure Databricks-notebooks. Zie De Databricks SDK voor Python verifiëren met uw Azure Databricks-account of -werkruimte voor meer informatie over standaardverificatie buiten notebooks.

Zie de voorbeelden in de Databricks SDK voor Python-opslagplaats in GitHub voor aanvullende codevoorbeelden . Zie ook:

Een cluster maken

In dit codevoorbeeld wordt een cluster gemaakt met de opgegeven Databricks Runtime-versie en het type clusterknooppunt. Dit cluster heeft één werkrol en het cluster wordt na 15 minuten niet-actieve tijd automatisch beëindigd.

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

Een cluster definitief verwijderen

In dit codevoorbeeld wordt het cluster definitief verwijderd met de opgegeven cluster-id uit de werkruimte.

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)

Een taak maken

In dit codevoorbeeld wordt een Azure Databricks-taak gemaakt waarmee het opgegeven notebook op het opgegeven cluster wordt uitgevoerd. Wanneer de code wordt uitgevoerd, worden het pad van het bestaande notebook, de bestaande cluster-id en de gerelateerde taakinstellingen van de gebruiker in de terminal opgehaald.

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

Een taak maken die gebruikmaakt van serverloze compute

Belangrijk

Serverloze rekenkracht voor werkstromen bevindt zich in openbare preview. Zie De openbare preview-versie van serverloze compute inschakelen voor informatie over geschiktheid en inschakeling.

In het volgende voorbeeld wordt een taak gemaakt die gebruikmaakt van serverloze compute voor werkstromen:

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

Groepen op accountniveau weergeven

In dit codevoorbeeld worden de weergavenamen voor alle beschikbare groepen in het Azure Databricks-account weergegeven.

from databricks.sdk import AccountClient

a = AccountClient()

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

Testen

Als u uw code wilt testen, gebruikt u Python-testframeworks zoals pytest. Als u uw code wilt testen onder gesimuleerde omstandigheden zonder Azure Databricks REST API-eindpunten aan te roepen of de status van uw Azure Databricks-accounts of -werkruimten te wijzigen, gebruikt u Python-mockbibliotheken zoals unittest.mock.

Bijvoorbeeld, op basis van het volgende bestand met de naam helpers.py van een create_cluster functie die informatie retourneert over het nieuwe cluster:

# 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

En op basis van het volgende bestand met de naam main.py waarmee de create_cluster functie wordt aangeroepen:

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

Het volgende bestand met de naam test_helpers.py test of de create_cluster functie het verwachte antwoord retourneert. In plaats van een cluster te maken in de doelwerkruimte, wordt met deze test een WorkspaceClient object gesimuleerd, worden de instellingen van het gesimuleerde object gedefinieerd en wordt het gesimuleerde object vervolgens doorgegeven aan de create_cluster functie. De test controleert vervolgens of de functie de verwachte id van het nieuwe gesimuleerde cluster retourneert.

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

Als u deze test wilt uitvoeren, voert u de pytest opdracht uit vanuit de hoofdmap van het codeproject, wat testresultaten moet opleveren die vergelijkbaar zijn met de volgende:

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

Aanvullende bronnen

Zie voor meer informatie: