Python için Databricks SDK'sı
Not
Databricks, işleri ve diğer Databricks kaynaklarını kaynak kodu olarak oluşturmak, geliştirmek, dağıtmak ve test etme amacıyla Databricks Varlık Paketleri önerir. Bkz . Databricks Varlık Paketleri nedir?.
Bu makalede, Python için Databricks SDK'sı ile Azure Databricks işlemlerini otomatikleştirmeyi ve geliştirmeyi hızlandırmayı öğreneceksiniz. Bu makalede, Belgeleri Okuma hakkındaki Python için Databricks SDK belgeleri ve GitHub'daki Python için Databricks SDK deposundaki kod örnekleri desteklenir.
Not
Python için Databricks SDK'sı Beta sürümündedir ve üretimde kullanılabilir.
Beta döneminde Databricks, kodunuzun bağımlı olduğu Python için Databricks SDK'sının belirli bir ikincil sürümüne bağımlılığı sabitlemenizi önerir. Örneğin, gibi dosyalarda requirements.txt
venv
bağımlılıkları sabitleyebilirsiniz, örneğin, veya pyproject.toml
poetry.lock
şiir için. Bağımlılıkları sabitleme hakkında daha fazla bilgi için bkz. Sanal Ortamlar ve Paketleri veya venv
Şiir için bağımlılıkları yükleme.
Başlamadan önce
Python için Databricks SDK'sını bir Azure Databricks not defteri içinden veya yerel geliştirme makinenizden kullanabilirsiniz.
- Azure Databricks not defterinin içinden Python için Databricks SDK'sını kullanmak için Azure Databricks not defterinden Python için Databricks SDK'sını kullanma bölümüne atlayın.
- Yerel geliştirme makinenizden Python için Databricks SDK'sını kullanmak için bu bölümdeki adımları tamamlayın.
Python için Databricks SDK'sını kullanmaya başlamadan önce geliştirme makinenizde aşağıdakiler olmalıdır:
- Azure Databricks kimlik doğrulaması yapılandırıldı.
- Python 3.8 veya üzeri yüklü. Databricks, Azure Databricks işlem kaynaklarını otomatikleştirmek için Python'ın hedef Azure Databricks işlem kaynağınızda yüklü olanla eşleşen birincil ve ikincil sürümlerinin yüklü olduğunu önerir. Bu makaledeki örnekler, Python 3.10 yüklü Databricks Runtime 13.3 LTS ile kümeleri otomatikleştirmeyi temel alır. Doğru sürüm için bkz . Databricks Runtime sürüm notları sürümleri ve kümenizin Databricks Runtime sürümü için uyumluluk .
- Databricks, Python için Databricks SDK'sı ile kullandığınız her Python projesi için bir Python sanal ortamı oluşturmanızı ve etkinleştirmenizi önerir. Python sanal ortamları, kod projenizin Python ve Python paketlerinin uyumlu sürümlerini (bu örnekte Python için Databricks SDK paketi) kullandığından emin olunmaya yardımcı olur. Python sanal ortamları hakkında daha fazla bilgi için bkz . venv veya Şiir.
Python için Databricks SDK'sını kullanmaya başlama
Bu bölümde, yerel geliştirme makinenizden Python için Databricks SDK'sını kullanmaya nasıl başlandığı açıklanmaktadır. Azure Databricks not defterinin içinden Python için Databricks SDK'sını kullanmak için Azure Databricks not defterinden Python için Databricks SDK'sını kullanma bölümüne atlayın.
Azure Databricks kimlik doğrulaması yapılandırılmış, Python zaten yüklü ve Python sanal ortamınız zaten etkin olan geliştirme makinenizde, Python Paket Dizini'nden (PyPI) databricks-sdk paketini (ve bağımlılıklarını) aşağıdaki gibi yükleyin:
Venv
Paketi yüklemek
databricks-sdk
için kullanınpip
. (Bazı sistemlerde, değerini burada ve boyunca ilepip
değiştirmenizpip3
gerekebilir.)pip3 install databricks-sdk
Şiir
poetry add databricks-sdk
Python için Databricks SDK'sı
databricks-sdk
Beta'dayken paketin belirli bir sürümünü yüklemek için paketin Sürüm geçmişine bakın. Örneğin, sürümünü0.1.6
yüklemek için:Venv
pip3 install databricks-sdk==0.1.6
Şiir
poetry add databricks-sdk==0.1.6
Python için Databricks SDK paketinin mevcut yüklemesini en son sürüme yükseltmek için aşağıdaki komutu çalıştırın:
Venv
pip3 install --upgrade databricks-sdk
Şiir
poetry add databricks-sdk@latest
Python paketinin geçerli
Version
ve diğer ayrıntıları için Databricks SDK'sını göstermek için aşağıdaki komutu çalıştırın:Venv
pip3 show databricks-sdk
Şiir
poetry show databricks-sdk
Python sanal ortamınızda, Python için Databricks SDK'sını içeri aktaran bir Python kod dosyası oluşturun. Aşağıdaki örnek, aşağıdaki içeriklere sahip adlı
main.py
bir dosyada Azure Databricks çalışma alanınızdaki tüm kümeleri listeler:from databricks.sdk import WorkspaceClient w = WorkspaceClient() for c in w.clusters.list(): print(c.cluster_name)
komutunu çalıştırarak, adlı
main.py
bir dosya varsayarak Python kod dosyanızı çalıştırınpython
:Venv
python3.10 main.py
Şiir
Sanal ortamın kabuğundaysanız:
python3.10 main.py
Sanal ortamın kabuğunda değilseniz:
poetry run python3.10 main.py
Not
Önceki çağrısında
w = WorkspaceClient()
hiçbir bağımsız değişken ayarlanmadığından Python için Databricks SDK'sı, Azure Databricks kimlik doğrulamasını gerçekleştirmeye çalışmak için varsayılan işlemini kullanır. Bu varsayılan davranışı geçersiz kılmak için aşağıdaki kimlik doğrulama bölümüne bakın.
Azure Databricks hesabınız veya çalışma alanınızla Python için Databricks SDK'sının kimliğini doğrulama
Bu bölümde, yerel geliştirme makinenizden Azure Databricks hesabınıza veya çalışma alanınıza python için Databricks SDK'sının kimliğinin nasıl doğrulandığı açıklanmaktadır. Azure Databricks not defteri içinden Python için Databricks SDK'sının kimliğini doğrulamak için Azure Databricks not defterinden Python için Databricks SDK'sını kullanma bölümüne atlayın.
Python için Databricks SDK'sı, kimlik doğrulamasına yönelik birleştirilmiş ve tutarlı bir mimari ve programlı yaklaşım olan Databricks istemci birleşik kimlik doğrulama standardını uygular. Bu yaklaşım, Azure Databricks ile kimlik doğrulamasını ayarlamayı ve otomatikleştirmeyi daha merkezi ve öngörülebilir hale getirmenizi sağlar. Databricks kimlik doğrulamasını bir kez yapılandırmanıza ve daha fazla kimlik doğrulaması yapılandırması değişikliği yapmadan bu yapılandırmayı birden çok Databricks aracında ve SDK'da kullanmanıza olanak tanır. Python'da daha eksiksiz kod örnekleri de dahil olmak üzere daha fazla bilgi için bkz . Databricks istemcisi birleşik kimlik doğrulaması.
Not
Python için Databricks SDK'sı henüz Azure yönetilen kimlikleri kimlik doğrulamasını uygulamadı.
Python için Databricks SDK'sı ile Databricks kimlik doğrulamasını başlatmak için kullanılabilir kodlama desenlerinden bazıları şunlardır:
Aşağıdakilerden birini yaparak Databricks varsayılan kimlik doğrulamasını kullanın:
- Hedef Databricks kimlik doğrulama türü için gerekli alanlarla özel bir Databricks yapılandırma profili oluşturun veya tanımlayın. Ardından ortam değişkenini
DATABRICKS_CONFIG_PROFILE
özel yapılandırma profilinin adına ayarlayın. - Hedef Databricks kimlik doğrulama türü için gerekli ortam değişkenlerini ayarlayın.
Ardından databricks varsayılan kimlik doğrulamasıyla bir nesne örneği
WorkspaceClient
oluşturun:from databricks.sdk import WorkspaceClient w = WorkspaceClient() # ...
- Hedef Databricks kimlik doğrulama türü için gerekli alanlarla özel bir Databricks yapılandırma profili oluşturun veya tanımlayın. Ardından ortam değişkenini
Azure Databricks kişisel erişim belirteçleri gibi hassas bilgilerin kodunuzda açığa çıkmasına neden olduğundan, gerekli alanların sabit kodlanması desteklenir ancak önerilmez. Aşağıdaki örnek Databricks belirteci kimlik doğrulaması için Azure Databricks konağı ve erişim belirteci değerlerini sabit kodlar:
from databricks.sdk import WorkspaceClient w = WorkspaceClient( host = 'https://...', token = '...' ) # ...
Ayrıca Bkz. Python için Databricks SDK'sı belgelerinde kimlik doğrulaması .
Azure Databricks not defterinden Python için Databricks SDK'sını kullanma
Python için Databricks SDK'sının yüklü olduğu ekli bir Azure Databricks kümesine sahip bir Azure Databricks not defterinden Python için Databricks SDK'sını çağırabilirsiniz. Databricks Runtime 13.3 LTS veya üzerini kullanan tüm Azure Databricks kümelerine varsayılan olarak yüklenir. Databricks Runtime 12.2 LTS ve altı kullanan Azure Databricks kümeleri için önce Python için Databricks SDK'sını yüklemeniz gerekir. Bkz . 1. Adım: Python için Databricks SDK'sını yükleme veya yükseltme.
Belirli bir Databricks Runtime sürümü için yüklenen Python için Databricks SDK'sını görmek için, bu sürüme ilişkin Databricks Runtime sürüm notlarının Yüklü Python kitaplıkları bölümüne bakın.
Databricks, SDK'nın kullanılabilir en son sürümünü PiPy'den yüklemenizi önerir, ancak varsayılan Azure Databricks not defteri kimlik doğrulaması tüm Databricks Runtime sürümlerinde sürüm 0.6.0 ve üzeri tarafından kullanıldığından Python 0.6.0 veya üzeri için Databricks SDK'sına en azından yükleme veya yükseltme yapmanızı önerir.
Not
Databricks Runtime 15.1, Python için Databricks SDK'sının (0.20.0) yükseltme gerektirmeden varsayılan not defteri kimlik doğrulamasını destekleyen bir sürümünün yüklü olduğu ilk Databricks Runtime'dır.
Aşağıdaki tabloda Python ve Databricks Runtime sürümleri için Databricks SDK'sı için not defteri kimlik doğrulaması desteği özetlenmektedir:
SDK/DBR | 10.4 LTS | 11.3 LTS | 12,3 LTS | 13.3 LTS | 14,3 LTS | 15.1 ve üzeri |
---|---|---|---|---|---|---|
0.1.7 ve altı | ||||||
0.1.10 | ✓ | ✓ | ✓ | ✓ | ✓ | |
0.6.0 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
0.20.0 ve üzeri | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Varsayılan Azure Databricks not defteri kimlik doğrulaması, Azure Databricks'in kendi kullanımı için arka planda otomatik olarak oluşturduğu geçici bir Azure Databricks kişisel erişim belirtecini kullanır. Azure Databricks, not defteri çalışmayı durdurduktan sonra bu geçici belirteci siler.
Önemli
- Varsayılan Azure Databricks not defteri kimlik doğrulaması yalnızca kümenin sürücü düğümünde çalışır ve kümenin çalışan veya yürütücü düğümlerinden herhangi birinde çalışmaz.
- Azure Databricks not defteri kimlik doğrulaması, Azure Databricks yapılandırma profilleriyle çalışmaz.
Azure Databricks hesap düzeyinde API'leri çağırmak veya varsayılan Databricks not defteri kimlik doğrulaması dışında bir Databricks kimlik doğrulama türü kullanmak istiyorsanız, aşağıdaki kimlik doğrulama türleri de desteklenir:
Authentication type | Python sürümleri için Databricks SDK'sı |
---|---|
OAuth makineden makineye (M2M) kimlik doğrulaması | 0.18.0 ve üzeri |
OAuth kullanıcıdan makineye (U2M) kimlik doğrulaması | 0.19.0 ve üzeri |
Microsoft Entra ID hizmet sorumlusu kimlik doğrulaması | Tüm sürümler |
Azure CLI kimlik doğrulaması | Tüm sürümler |
Databricks kişisel erişim belirteci kimlik doğrulaması | Tüm sürümler |
Azure yönetilen kimlik kimlik doğrulaması henüz desteklenmiyor.
1. Adım: Python için Databricks SDK'sını yükleme veya yükseltme
Azure Databricks Python not defterleri, python için Databricks SDK'sını diğer Python kitaplıklarında olduğu gibi kullanabilir. Ekli Azure Databricks kümesine Python kitaplığı için Databricks SDK'sını yüklemek veya yükseltmek için, aşağıdaki gibi bir not defteri hücresinden magic komutunu çalıştırın
%pip
:%pip install databricks-sdk --upgrade
Sihirli komutu çalıştırdıktan
%pip
sonra, yüklü veya yükseltilmiş kitaplığı not defteri için kullanılabilir hale getirmek için Python'ı yeniden başlatmanız gerekir. Bunu yapmak için, sihirli komutuyla%pip
hücreden hemen sonra bir not defteri hücresinden aşağıdaki komutu çalıştırın:dbutils.library.restartPython()
Python için Databricks SDK'sının yüklü sürümünü görüntülemek için bir not defteri hücresinden aşağıdaki komutu çalıştırın:
%pip show databricks-sdk | grep -oP '(?<=Version: )\S+'
2. Adım: Kodunuzu çalıştırma
Not defteri hücrelerinizde, Python için Databricks SDK'sını içeri aktaran ve çağıran Python kodu oluşturun. Aşağıdaki örnek, Azure Databricks çalışma alanınızdaki tüm kümeleri listelemek için varsayılan Azure Databricks not defteri kimlik doğrulamasını kullanır:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
for c in w.clusters.list():
print(c.cluster_name)
Bu hücreyi çalıştırdığınızda, Azure Databricks çalışma alanınızdaki kullanılabilir tüm kümelerin adlarının listesi görüntülenir.
Farklı bir Azure Databricks kimlik doğrulama türü kullanmak için bkz . Azure Databricks kimlik doğrulama yöntemleri ve ek teknik ayrıntılar için ilgili bağlantıya tıklayın.
Databricks Yardımcı Programlarını Kullanma
Yerel geliştirme makinenizde veya bir Azure Databricks not defteri içinde çalışan Python kodu için Databricks SDK'sından Databricks Yardımcı Programları (dbutils) başvurularını çağırabilirsiniz.
- Databricks Yardımcı Programları yerel geliştirme makinenizden yalnızca ,
dbutils.secrets
,dbutils.widgets
vedbutils.jobs
komut gruplarınadbutils.fs
erişebilir. - Azure Databricks kümesine bağlı bir Azure Databricks not defterinden Databricks Yardımcı Programları yalnızca
dbutils.fs
,dbutils.secrets
vedbutils.widgets
değil tüm kullanılabilir Databricks Yardımcı Programları komut gruplarına erişebilir. Ayrıca,dbutils.notebook
komut grubu yalnızca veyadbutils.notebook.exit
gibidbutils.notebook.run
iki komut düzeyiyle sınırlıdır.
Yerel geliştirme makinenizden veya Azure Databricks not defterinizden Databricks Yardımcı Programlarını çağırmak için içinde WorkspaceClient
kullanındbutils
. Bu kod örneği, çalışma alanının DBFS kökündeki tüm nesnelerin yollarını listelemek üzere içinde WorkspaceClient
çağrı dbutils
yapmak için varsayılan Azure Databricks not defteri kimlik doğrulamasını kullanır.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
d = w.dbutils.fs.ls('/')
for f in d:
print(f.path)
Alternatif olarak, doğrudan arayabilirsiniz dbutils
. Ancak, yalnızca varsayılan Azure Databricks not defteri kimlik doğrulamasını kullanmakla sınırlıdır. Bu kod örneği doğrudan çalışma alanının DBFS kökündeki tüm nesneleri listelemek için çağırır dbutils
.
from databricks.sdk.runtime import *
d = dbutils.fs.ls('/')
for f in d:
print(f.path)
Unity Kataloğu birimlerine erişmek için içinde kullanın.WorkspaceClient
files
Bkz . Unity Kataloğu birimlerindeki dosyaları yönetme. Birimlere erişmek için kendi başına veya içinde WorkspaceClient
kullanamazsınızdbutils
.
Ayrıca bkz. dbutils ile etkileşim.
Kod örnekleri
Aşağıdaki kod örneklerinde Python için Databricks SDK'sını kullanarak küme oluşturma ve silme, işleri çalıştırma ve hesap düzeyinde grupları listeleme işlemleri gösterilmektedir. Bu kod örneklerinde varsayılan Azure Databricks not defteri kimlik doğrulaması kullanılır. Varsayılan Azure Databricks not defteri kimlik doğrulaması hakkında ayrıntılı bilgi için bkz . Azure Databricks not defterinden Python için Databricks SDK'sını kullanma. Not defterleri dışında varsayılan kimlik doğrulaması hakkında ayrıntılı bilgi için bkz . Azure Databricks hesabınız veya çalışma alanınızla Python için Databricks SDK'sının kimliğini doğrulama.
Ek kod örnekleri için GitHub'daki Python için Databricks SDK deposundaki örneklere bakın. Ayrıca bkz:
Küme oluşturma
Bu kod örneği, belirtilen Databricks Runtime sürümüne ve küme düğümü türüne sahip bir küme oluşturur. Bu kümenin bir çalışanı vardır ve küme 15 dakikalık boşta kalma süresinden sonra otomatik olarak sonlandırılır.
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")
Kümeyi kalıcı olarak silme
Bu kod örneği, belirtilen küme kimliğine sahip kümeyi çalışma alanından kalıcı olarak siler.
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)
İş oluşturma
Bu kod örneği, belirtilen kümede belirtilen not defterini çalıştıran bir Azure Databricks işi oluşturur. Kod çalışırken, terminaldeki kullanıcıdan mevcut not defterinin yolunu, mevcut küme kimliğini ve ilgili iş ayarlarını alır.
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")
Sunucusuz işlem kullanan bir iş oluşturma
Aşağıdaki örnek, İşler için Sunucusuz İşlem kullanan bir iş oluşturur:
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",
)
]
)
Unity Kataloğu birimlerindeki dosyaları yönetme
Bu kod örneği, bir Unity Kataloğu birimine files
erişmek için içindeki WorkspaceClient
işlevlere yönelik çeşitli çağrıları gösterir.
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)
Hesap düzeyinde grupları listeleme
Bu kod örneği, Azure Databricks hesabındaki tüm kullanılabilir grupların görünen adlarını listeler.
from databricks.sdk import AccountClient
a = AccountClient()
for g in a.groups.list():
print(g.display_name)
Test Etme
Kodunuzu test etmek için pytest gibi Python test çerçevelerini kullanın. Azure Databricks REST API uç noktalarını çağırmadan veya Azure Databricks hesaplarınızın veya çalışma alanlarınızın durumunu değiştirmeden kodunuzu sanal koşullar altında test etmek için unittest.mock gibi Sahte Python kitaplıklarını kullanın.
İpucu
Databricks Labs, kod kalitesini sağlamak için Databricks ile tümleştirme testlerini basitleştirmek için bir pytest eklentisi ve bir pylint eklentisi sağlar.
Adlı aşağıdaki örnek dosya helpers.py
, yeni küme hakkında bilgi döndüren bir create_cluster
işlev içerir:
# 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
İşlevi çağıran adlı main.py
aşağıdaki dosya göz önünde bulundurulduğunda create_cluster
:
# 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)
Adlı aşağıdaki dosya test_helpers.py
, işlevin create_cluster
beklenen yanıtı döndürip döndürmediğini sınar. Bu test, hedef çalışma alanında küme oluşturmak yerine bir WorkspaceClient
nesneyle dalga geçer, sahte nesnenin ayarlarını tanımlar ve ardından sahte nesneyi işleve create_cluster
geçirir. Test daha sonra işlevin yeni sahte kümenin beklenen kimliğini döndürip döndürmediğini denetler.
# 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'
Bu testi çalıştırmak için kod projesinin pytest
kökünden komutunu çalıştırın. Bu, aşağıdakine benzer test sonuçları üretmelidir:
$ 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 ==========================
Ek kaynaklar
Daha fazla bilgi için bkz.