Megosztás:


Databricks SDK for Python

Megjegyzés

A Databricks a Databricks Eszközcsomagokat javasolja a feladatok és más Databricks-erőforrások forráskódként való létrehozásához, fejlesztéséhez, üzembe helyezéséhez és teszteléséhez. Lásd: Mik azok a Databricks-eszközcsomagok?.

Ebből a cikkből megtudhatja, hogyan automatizálhatja az Azure Databricks-műveleteket, és hogyan gyorsíthatja fel a fejlesztést a Pythonhoz készült Databricks SDK-val. Ez a cikk kiegészíti a Databricks SDK for Python dokumentációját a Read The Docs oldalon, valamint a GitHubon található Databricks SDK for Python adattár kódpéldáit.

Megjegyzés

A Databricks SDK a Pythonhoz bétaverzióban van, és alkalmazható éles környezetben.

A bétaidőszak alatt a Databricks azt javasolja, hogy rögzítse a Pythonhoz készült Databricks SDK adott alverziójának függőségét, amelytől a kód függ. Rögzítheti például a függőségeket olyan fájlokban, mint a requirements.txtvenv esetében, vagy a pyproject.toml és poetry.lock a Poetry esetében. A függőségek rögzítésével kapcsolatos további információkért lásd a Virtual Environments and Packages című részt a venv esetében, vagy a Függőségek telepítése című részt a Poetry esetében.

Mielőtt elkezdené

A Pythonhoz készült Databricks SDK-t egy Azure Databricks-jegyzetfüzetből vagy a helyi fejlesztőgépről használhatja.

A Pythonhoz készült Databricks SDK használatának megkezdése előtt a fejlesztőgépnek a következőkkel kell rendelkeznie:

  • A(z) Azure Databricks-hitelesítés be lett konfigurálva.
  • A Python 3.8 vagy újabb verziója telepítve van. Az Azure Databricks számítási erőforrásainak automatizálásához a Databricks azt javasolja, hogy a Python fő és alverziói telepítve vannak, amelyek megfelelnek a cél Azure Databricks számítási erőforrásra telepített verziónak. A cikk példái a Databricks Runtime 13.3 LTS-sel rendelkező fürtök automatizálására épülnek, amelyeken telepítve van a Python 3.10. A megfelelő verzióért tekintse meg a Databricks Runtime kibocsátási megjegyzéseinek verzióit és a fürt Databricks Runtime-verziójának kompatibilitását.
  • A Databricks azt javasolja, hogy hozzon létre és aktiváljon egy Python virtuális környezetet minden Olyan Python-projekthez, amelyet a Python Databricks SDK-val használ. A Python virtuális környezetek segítenek meggyőződni arról, hogy a kódprojekt a Python- és Python-csomagok kompatibilis verzióit használja (ebben az esetben a Python-csomaghoz készült Databricks SDK-t). További információ a Python virtuális környezetekről: venv vagy Poetry.

Ismerkedés a Pythonhoz készült Databricks SDK-val

Ez a szakasz bemutatja, hogyan kezdheti meg a Pythonhoz készült Databricks SDK használatát a helyi fejlesztőgépről. Ha egy Azure Databricks-jegyzetfüzetből szeretné használni a Pythonhoz készült Databricks SDK-t, ugorjon előre a Databricks SDK for Python használatához egy Azure Databricks-jegyzetfüzetből.

  1. A konfigurált Azure Databricks-hitelesítéssel rendelkező fejlesztői gépen a Python már telepítve van, és a Python virtuális környezete már aktiválva van, telepítse a Databricks-sdk-csomagot (és függőségeit) a Python-csomagindexből (PyPI), az alábbiak szerint:

    Venv

    A pip használatával telepítheti a databricks-sdk csomagot. (Egyes rendszerekben előfordulhat, hogy itt és mindenhol pip3-t pip-re kell cserélnie.)

    pip3 install databricks-sdk
    

    Költészet

    poetry add databricks-sdk
    

    Ha telepíteni szeretné a databricks-sdk csomag egy adott verzióját, amíg a Pythonhoz készült Databricks SDK bétaverzióban van, tekintse meg a csomag kiadási előzményeit. Például a következő verzió 0.1.6telepítéséhez:

    Venv

    pip3 install databricks-sdk==0.1.6
    

    Költészet

    poetry add databricks-sdk==0.1.6
    

    A Databricks SDK for Python-csomag meglévő telepítésének a legújabb verzióra való frissítéséhez futtassa a következő parancsot:

    Venv

    pip3 install --upgrade databricks-sdk
    

    Költészet

    poetry add databricks-sdk@latest
    

    A Python-csomaghoz készült Databricks SDK aktuális Version és egyéb adatainak megjelenítéséhez futtassa a következő parancsot:

    Venv

    pip3 show databricks-sdk
    

    Költészet

    poetry show databricks-sdk
    
  2. A Python virtuális környezetben hozzon létre egy Python-kódfájlt, amely importálja a Pythonhoz készült Databricks SDK-t. Az alábbi példa egy, a következő tartalommal ellátott main.py fájlban egyszerűen felsorolja az Azure Databricks-munkaterület összes fürtjét:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    
    for c in w.clusters.list():
      print(c.cluster_name)
    
  3. Futtassa a Python-kódfájlt egy olyan fájl feltételezése mellett, melynek neve main.py, az alábbi parancs futtatásával: python

    Venv

    python3.10 main.py
    

    Költészet

    Ha a virtuális környezet rendszerhéjában van:

    python3.10 main.py
    

    Ha nem a virtuális környezet felületén van:

    poetry run python3.10 main.py
    

    Megjegyzés

    Ha az előző hívásban w = WorkspaceClient()nem állít be argumentumokat, a Pythonhoz készült Databricks SDK az alapértelmezett folyamatot használja az Azure Databricks-hitelesítés végrehajtására. Az alapértelmezett viselkedés felülbírálásához tekintse meg a következő hitelesítési szakaszt.

A Pythonhoz készült Databricks SDK hitelesítése az Azure Databricks-fiókkal vagy -munkaterülettel

Ez a szakasz azt ismerteti, hogyan hitelesítheti a PythonHoz készült Databricks SDK-t a helyi fejlesztőgépről az Azure Databricks-fiókba vagy -munkaterületre. Ha egy Azure Databricks-jegyzetfüzetből szeretné hitelesíteni a Pythonhoz készült Databricks SDK-t, lépjen tovább a Databricks SDK for Python Azure Databricks-jegyzetfüzetből történő használatához.

A Pythonhoz készült Databricks SDK implementálja a Databricks egységes hitelesítési szabványát , amely a hitelesítés konszolidált és egységes architekturális és programozott megközelítése. Ez a megközelítés segít központosítottabbá és kiszámíthatóbbá tenni az Azure Databricks-hitelesítés beállítását és automatizálását. Lehetővé teszi a Databricks-hitelesítés egyszeri konfigurálását, majd ezt a konfigurációt több Databricks-eszközön és SDK-ban is használhatja további hitelesítési konfigurációmódosítások nélkül. További információkért, beleértve a Python teljesebb kód példáit, tekintse meg a Databricks egyesített hitelesítését.

Megjegyzés

A Pythonhoz készült Databricks SDK még nem implementálta a hitelesítést azure-beli felügyelt identitásokkal.

A Databricks-hitelesítésnek a Pythonhoz készült Databricks SDK-val való inicializálásához rendelkezésre álló kódolási minták közé tartoznak a következők:

  • Használja a Databricks alapértelmezett hitelesítését az alábbiak egyikével:

    • Egyéni Databricks-konfigurációs profil létrehozása vagy azonosítása a cél Databricks-hitelesítési típushoz szükséges mezőkkel. Ezután állítsa a DATABRICKS_CONFIG_PROFILE környezeti változót az egyéni konfigurációs profil nevére.
    • Adja meg a cél Databricks-hitelesítési típushoz szükséges környezeti változókat.

    Ezután példányosíthat például egy WorkspaceClient objektumot a Databricks alapértelmezett hitelesítésével az alábbiak szerint:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    # ...
    
  • A szükséges mezők szigorú kódolása támogatott, de nem ajánlott, mivel a kód bizalmas adatainak, például az Azure Databricks személyes hozzáférési jogkivonatainak felfedését kockáztatja. A következő példa rögzíti az Azure Databricks gazda- és hozzáférési jogkivonat-értékeket a Databricks jogkivonat-hitelesítéshez.

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

Lásd még : Hitelesítés a Pythonhoz készült Databricks SDK dokumentációjában.

A Pythonhoz készült Databricks SDK használata Egy Azure Databricks-jegyzetfüzetből

A Databricks SDK for Python-funkciókat egy olyan Azure Databricks-jegyzetfüzetből hívhatja meg, amely rendelkezik egy csatlakoztatott Azure Databricks-fürttel, amelyen telepítve van a Pythonhoz készült Databricks SDK. Alapértelmezés szerint minden Olyan Azure Databricks-fürtön telepítve van, amely a Databricks Runtime 13.3 LTS-t vagy újabb verziót használja. Azoknál az Azure Databricks-fürtöknél, amelyek a Databricks Runtime 12.2 LTS-t vagy régebbi verziókat használnak, először telepítenie kell a Pythonhoz készült Databricks SDK-t. Lásd : 1. lépés: A Pythonhoz készült Databricks SDK telepítése vagy frissítése.

Az adott Databricks Runtime-verzióhoz telepített Databricks SDK for Python-verzió megtekintéséhez tekintse meg az adott verzióhoz tartozó Databricks Runtime kiadási megjegyzéseinek Telepített Python-kódtárak szakaszát.

A Databricks azt javasolja, hogy telepítse az SDK legújabb elérhető verzióját a PiPy-ból, de legalább telepítse vagy frissítsen a Python 0.6.0-s vagy újabb Verziójához készült Databricks SDK-ra, mivel az alapértelmezett Azure Databricks-jegyzetfüzet-hitelesítést a 0.6.0-s és újabb verzió használja az összes Databricks-futtatókörnyezeti verzióra.

Megjegyzés

A Databricks Runtime 15.1 az első Databricks Runtime, amely rendelkezik a Pythonhoz készült Databricks SDK (0.20.0) telepített verziójával, amely támogatja az alapértelmezett jegyzetfüzet-hitelesítést frissítés nélkül.

Az alábbi táblázat a Pythonhoz és a Databricks Runtime-verziókhoz készült Databricks SDK notebookhitelesítési támogatását ismerteti:

SDK/Databricks Runtime 10,4 LTS 11.3 LTS 12.3 LTS 13.3 LTS 14.3 LTS 15.1 vagy újabb
0.1.7 és alatta
0.1.10
0.6.0
0.20.0 vagy újabb

Az Alapértelmezett Azure Databricks-jegyzetfüzet-hitelesítés egy ideiglenes Azure Databricks személyes hozzáférési jogkivonatra támaszkodik, amelyet az Azure Databricks automatikusan létrehoz a háttérben saját használatra. Az Azure Databricks törli ezt az ideiglenes jogkivonatot a jegyzetfüzet futásának leállása után.

Fontos

  • Az Alapértelmezett Azure Databricks-jegyzetfüzet-hitelesítés csak a fürt illesztőprogram-csomópontján működik, a fürt egyik feldolgozói vagy végrehajtó csomópontján sem.
  • Az Azure Databricks-jegyzetfüzetek hitelesítése nem működik az Azure Databricks konfigurációs profiljaival.
  • Az Azure Databricks notebookhitelesítés nem működik a Databricks Container Services szolgáltatással.

Ha azure Databricks-fiókszintű API-kat szeretne meghívni, vagy ha az alapértelmezett Databricks-notebook-hitelesítésen kívüli Databricks-hitelesítési típust szeretne használni, a következő hitelesítési típusok is támogatottak:

Hitelesítés típusa Databricks SDK Python-verziókhoz
OAuth gépről gépre (M2M) hitelesítés 0.18.0 vagy újabb
OAuth felhasználó és gép közötti (U2M) hitelesítés 0.19.0 vagy újabb
Microsoft Entra ID alkalmazáspéldányos hitelesítés Az összes verzió
Azure CLI hitelesítés Az összes verzió
Databricks személyes hozzáférési jogkivonat hitelesítése Az összes verzió

Az Azure-beli felügyelt identitások hitelesítése még nem támogatott.

1. lépés: A Pythonhoz készült Databricks SDK telepítése vagy frissítése

Megjegyzés

A Pythonhoz készült Databricks SDK alapértelmezés szerint telepítve van minden Olyan Azure Databricks-fürtön, amely a Databricks Runtime 13.3 LTS-t vagy újabb verziót használja.

  1. Az Azure Databricks Python-jegyzetfüzetek ugyanúgy használhatják a Pythonhoz készült Databricks SDK-t, mint bármely más Python-kódtárat. A Csatolt Azure Databricks-fürtön található Databricks SDK for Python-kódtár telepítéséhez vagy frissítéséhez futtassa a magic parancsot egy jegyzetfüzetcellából az %pip alábbiak szerint:

    %pip install databricks-sdk --upgrade
    
  2. A magic parancs futtatása után újra kell indítania a %pip Pythont, hogy elérhetővé tegye a telepített vagy frissített kódtárat a jegyzetfüzet számára. Ehhez futtassa a következő parancsot egy jegyzetfüzetcellából közvetlenül a cella után a %pip magic paranccsal:

    dbutils.library.restartPython()
    
  3. A Pythonhoz készült Databricks SDK telepített verziójának megjelenítéséhez futtassa a következő parancsot egy jegyzetfüzetcellából:

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

2. lépés: A kód futtatása

A jegyzetfüzetcellákban hozzon létre olyan Python-kódot, amely importálja, majd meghívja a PythonHoz készült Databricks SDK-t. Az alábbi példa az alapértelmezett Azure Databricks jegyzetfüzet-hitelesítést használja az Azure Databricks-munkaterületen található összes fürt listázásához.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

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

A cella futtatásakor megjelenik az Azure Databricks-munkaterületen elérhető összes fürt nevének listája.

Ha másik Azure Databricks-hitelesítési típust szeretne használni, tekintse meg az engedélyezési módszereket , és kattintson a megfelelő hivatkozásra a további technikai részletekért.

Databricks segédprogramok használata

Használhatja a Databricks Utilities a Databricks SDK for Python segítségével, amely a helyi fejlesztői gépen vagy egy Azure Databricks-jegyzetfüzetben fut.

  • A helyi fejlesztőgépről a Databricks Utilities csak a dbutils.fs, dbutils.secrets, dbutils.widgetsés dbutils.jobs parancscsoportokhoz fér hozzá.
  • Egy Azure Databricks-fürthöz csatolt Azure Databricks-jegyzetfüzetből a Databricks Utilities hozzáfér az összes elérhető Databricks Utilities parancscsoporthoz, de a dbutils.notebook parancscsoport csak két parancsszintre korlátozódik, például dbutils.notebook.run vagy dbutils.notebook.exit.

A Databricks Utilities meghívásához helyi fejlesztőgépéről vagy egy Azure Databricks-jegyzetfüzetből használja a dbutils-t a WorkspaceClient-ben. Ez a példakód az alapértelmezett Azure Databricks jegyzetfüzet hitelesítését használja arra, hogy meghívja a dbutils-et a WorkspaceClient-en belül, hogy listázza a munkaterület DBFS gyökerében található összes objektum elérési útját.

from databricks.sdk import WorkspaceClient

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

for f in d:
  print(f.path)

Másik lehetőségként közvetlenül is hívhat dbutils . Azonban csak az alapértelmezett Azure Databricks-jegyzetfüzet-hitelesítést használhatja. Ez a példakód közvetlenül meghívja dbutils, hogy listázza a munkaterület DBFS-gyökerében lévő összes objektumot.

from databricks.sdk.runtime import *

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

for f in d:
  print(f.path)

A Unity Catalog kötetekeléréséhez a files-ban használja a WorkspaceClient. Lásd: Fájlok kezelése Unity Catalog-kötetekben. A kötetek eléréséhez nem használhatja dbutils önmagában vagy WorkspaceClient belül.

Lásd még : Interakció a dbutil-okkal.

Kódpéldák

Az alábbi példakód bemutatja, hogyan használhatja a PythonHoz készült Databricks SDK-t fürtök létrehozására és törlésére, feladatok futtatására és fiókszintű csoportok listázására. Ezek a példakódok alapértelmezett Azure Databricks-jegyzetfüzet-hitelesítést használnak. Az Alapértelmezett Azure Databricks-jegyzetfüzet-hitelesítéssel kapcsolatos részletekért lásd : A Pythonhoz készült Databricks SDK használata Egy Azure Databricks-jegyzetfüzetből. A jegyzetfüzeteken kívüli alapértelmezett hitelesítéssel kapcsolatos részletekért lásd : A Databricks SDK for Python hitelesítése az Azure Databricks-fiókkal vagy -munkaterülettel.

További kódpéldákat a GitHub Databricks SDK for Python-adattárában talál. Lásd még:

Hozzon létre egy fürtöt

Ez a példakód létrehoz egy fürtöt a megadott Databricks Runtime-verzióval és fürtcsomóponttípussal. Ez a fürt egy munkavégzővel rendelkezik, és 15 perc tétlenség után automatikusan leáll.

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

Fürt végleges törlése

Ez a példakód véglegesen törli a meghatározott fürtazonosítóval rendelkező fürtöt a munkaterületről.

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)

Feladat létrehozása

Ez a példakód létrehoz egy Azure Databricks-feladatot, amely a megadott jegyzetfüzetet futtatja a megadott fürtön. A kód futtatásakor lekéri a meglévő jegyzetfüzet elérési útját, a meglévő fürtazonosítót és a kapcsolódó feladatbeállításokat a terminál felhasználójától.

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

Kiszolgáló nélküli számítást használó feladat létrehozása

Az alábbi példa létrehoz egy feladatot, amely a szerver nélküli számítási környezetet használja feladatokhoz:

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

Fájlok kezelése Unity Catalog-kötetekben

Ez a példakód bemutatja a files funkcionalitás különböző hívásait a WorkspaceClient-on belül egy Unity-katalógus kötet eléréséhez. További információkért tekintse meg a teljes SDK-dokumentációt.

A Pythonhoz készült Databricks SDK kétféleképpen tölthet fel és tölthet le fájlokat. upload_from és download_to fájl elérési utakhoz ajánlott. upload és download a memória- és stream-felületeken lévő adatokhoz ajánlott. Mind a négy módszer támogatja a mögöttes felhőtároló által támogatott maximális méretű fájlokat az SDK 0.72.0-s vagy újabb verziójának használatakor.

Ha egy Azure Storage-fiók tűzfala engedélyezve van, 5 GB fájlméretkorlát van érvényben.

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)

Fiókszintű csoportok listázása

Ez a példakód felsorolja az Azure Databricks-fiókban elérhető összes csoport megjelenítendő nevét.

Megjegyzés

A jegyzetfüzet natív hitelesítése AccountClientnem támogatott, ezért meg kell adnia a hitelesítő adatokat a konstruktorban, hogy futtassa ezt a példát egy jegyzetfüzetben.

from databricks.sdk import AccountClient

a = AccountClient()

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

Tesztelés

A kód teszteléséhez használjon Python-tesztelési keretrendszereket, például a pytestet. Ha szimulált körülmények között szeretné tesztelni a kódot az Azure Databricks REST API-végpontok meghívása vagy az Azure Databricks-fiókok vagy -munkaterületek állapotának módosítása nélkül, használjon Python-mintakódtárakat, például unittest.mockot.

Tipp.

A Databricks Labs egy pytest beépülő modult biztosít a Databricks integrációs tesztelésének egyszerűsítéséhez, valamint egy pylint beépülő modult a kódminőség biztosítása érdekében.

Az alábbi példafájl helpers.py neve egy függvényt create_cluster tartalmaz, amely az új fürtre vonatkozó információkat ad vissza:

# 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

Adott az alábbi fájl, amely meghívja a create_cluster függvényt: main.py

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

A következő elnevezett test_helpers.py fájl ellenőrzi, hogy a create_cluster függvény a várt választ adja-e vissza. Ahelyett, hogy fürtöt hoz létre a cél-munkaterületen, ez a teszt egy WorkspaceClient objektumot kiszimulál, definiálja a kiszimulált objektum beállításait, majd átadja a kiszimulált objektumot a create_cluster függvénynek. A teszt ezután ellenőrzi, hogy a függvény visszaadja-e az új szimulált fürt várt azonosítóját.

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

A teszt futtatásához futtassa a parancsot a pytest kódprojekt gyökérkönyvtárából, amelynek a következőhöz hasonló teszteredményeket kell létrehoznia:

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

Hibaelhárítás

Ez a szakasz a Pythonhoz készült Databricks SDK-val kapcsolatos gyakori problémák megoldásait ismerteti.

Problémák vagy egyéb visszajelzések jelentéséhez hozzon létre egy GitHub-problémát a Pythonhoz készült Databricks SDK-hoz.

Hiba: Nem lehet elemezni a választ

Ha a Következő hibaüzenet jelenik meg a Pythonhoz készült Databricks SDK használatakor, az szinte mindig a hitelesítési konfigurációval kapcsolatos problémát jelez.

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

Ha ezt a hibát tapasztalja, ellenőrizze a következőket:

  • Győződjön meg arról, hogy a Databricks-gazdagép megfelelően van beállítva.
  • Győződjön meg arról, hogy a hitelesítési módszer rendelkezik a végrehajtani kívánt API-művelethez szükséges engedélyekkel.
  • Ha vállalati tűzfal mögött áll, győződjön meg arról, hogy nem blokkolja vagy irányítja át az API-forgalmat.

A hiba gyakori oka, hogy az SDK-t egy bejelentkezési lapra irányítja át a privát hivatkozás, amelyet az SDK nem tud feldolgozni. Ez általában akkor fordul elő, ha egy olyan privát kapcsolattal kompatibilis munkaterületet próbál elérni, amelynek nincs nyilvános internet-hozzáférése egy másik hálózatról, mint amelyhez a VPC-végpont tartozik.

További részletekért lásd:

További erőforrások

További információk: