Python için Databricks SDK'sı

Bu makalede, Python için Databricks SDK'sı ile Azure Databricks hesaplarında, çalışma alanlarında ve ilgili kaynaklarda işlemleri otomatikleştirmeyi öğ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

Bu özellik 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.txtvenvbağımlılıkları sabitleyebilirsiniz, örneğin, veya pyproject.tomlpoetry.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.

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 kod 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. Bu makalede Python sanal ortamları için venv veya Potetry'nin nasıl kullanılacağı açıklanmaktadır.

ile Python sanal ortamı oluşturma venv

  1. Terminal kümenizden Python kod projenizin kök dizinine kadar aşağıdaki komutu çalıştırın. Bu komut, sanal ortam için Python 3.10'un kullanılmasını ve venv ardından sanal ortamın destekleyici dosyalarını Python kod projenizin kök dizininde adlı .venv gizli bir dizinde oluşturur.

    # Linux and macOS
    python3.10 -m venv ./.venv
    
    # Windows
    python3.10 -m venv .\.venv
    
  2. Sanal ortamı etkinleştirmek için kullanın venv . İşletim sisteminize ve terminal türüne göre kullanılacak doğru komut için venv belgelerine bakın. Örneğin, çalıştıran zshmacOS'ta:

    source ./.venv/bin/activate
    

    Sanal ortamın adı (örneğin, .venv) terminal isteminizden hemen önce parantez içinde görüntülendiğinde sanal ortamınızın etkinleştirildiğini bilirsiniz.

    Sanal ortamı istediğiniz zaman devre dışı bırakmak için komutunu deactivateçalıştırın.

    Sanal ortamın adı artık terminal isteminizden hemen önce parantez içinde görüntülenmiyorsa sanal ortamınızın devre dışı bırakıldığını bilirsiniz.

Python için Databricks SDK'sını kullanmaya başlama'ya geçin.

Şiir ile sanal ortam oluşturma

  1. Henüz yapmadıysanız Şiir yükleyin.

  2. Terminal kümenizden Python kod projenizin kök dizinine kadar aşağıdaki komutu çalıştırarak Şiir için Python kod projenizi başlatma talimatını poetry alın.

    poetry init
    
  3. Şiir, tamamlamanız için birkaç istem gösterir. Bu istemlerin hiçbiri Python için Databricks SDK'sına özgü değil. Bu istemler hakkında bilgi için bkz . init.

  4. İstemleri tamamladıktan sonra, Şiir Python projenize bir pyproject.toml dosya ekler. Dosya hakkında pyproject.toml bilgi için bkz . pyproject.toml dosyası.

  5. Terminaliniz python kod projenizin kök dizinine ayarlanmış durumdayken aşağıdaki komutu çalıştırın. Bu komut, dosyayı okuma, bağımlılıkları poetry yükleme ve çözme, bağımlılıkları kilitlemek için bir poetry.lock dosya oluşturma ve son olarak bir sanal ortam oluşturma yönergelerini sunar.pyproject.toml

    poetry install
    
  6. Terminal kümenizden Python kod projenizin kök dizinine kadar aşağıdaki komutu çalıştırarak sanal ortamı etkinleştirmek ve kabuğu girmek için komutunu poetry çalıştırın.

    poetry shell
    

    Sanal ortamınızın etkinleştirildiğini ve sanal ortamın adı terminal isteminizden hemen önce parantez içinde görüntülendiğinde kabuğun girildiğini bilirsiniz.

    Sanal ortamı devre dışı bırakmak ve kabukta istediğiniz zaman çıkmak için komutunu exitçalıştırın.

    Sanal ortamın adı artık terminal isteminizden hemen önce parantez içinde görüntülenmediğinde kabukta çıktığınızı öğreneceksiniz.

    Şiir sanal ortamları oluşturma ve yönetme hakkında daha fazla bilgi için bkz . Ortamları yönetme.

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.

  1. 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 ile pipdeğiştirmeniz pip3 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.6yüklemek için:

    Venv

    pip3 install databricks-sdk==0.1.6
    

    Şiir

    poetry add databricks-sdk==0.1.6
    

    İpucu

    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
    
  2. 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)
    
  3. komutunu çalıştırarak, adlı main.pybir dosya varsayarak Python kod dosyanızı çalıştırın python :

    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()
    # ...
    
  • 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. Python için Databricks SDK'sı, Databricks Runtime 13.3 LTS veya üzerini kullanan tüm Azure Databricks kümelerine zaten yüklenmiştir. 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.

Databricks Runtime'ın belirli bir sürümü için varsayılan olarak yüklenen Python için Databricks SDK'sının sürüm numarasını görmek için, bu Databricks Runtime sürümü için Databricks Runtime sürüm notlarının "Yüklü Python kitaplıkları" bölümüne bakın.

Python 0.6.0 ve üzeri için Databricks SDK'sı varsayılan Azure Databricks not defteri kimlik doğrulamasını kullanır. 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.

Databricks Runtime 13.3 LTS ve üzeri, Python 0.1.7 veya üzeri için Databricks SDK'sı yüklü varsayılan Azure Databricks not defteri kimlik doğrulamasını destekler. Databricks Runtime 10.4 LTS ve üzeri, Python 0.1.10 veya üzeri için Databricks SDK'sı yüklü varsayılan Azure Databricks not defteri kimlik doğrulamasını destekler. Ancak Databricks, Databricks Runtime sürümünden bağımsız olarak varsayılan Azure Databricks not defteri kimlik doğrulamasıyla maksimum uyumluluk için Python 0.6.0 veya üzeri için Databricks SDK'sını yüklemenizi veya yükseltmenizi önerir.

Azure Databricks hesap düzeyinde API'leri çağırmak veya varsayılan Azure Databricks not defteri kimlik doğrulaması dışında bir Azure Databricks kimlik doğrulama türü kullanmak istiyorsanız, Azure Databricks kümesinde Python için Databricks SDK'sını aşağıdaki gibi yüklemeniz veya yükseltmeniz gerekir:

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.

Azure Databricks not defteri kimlik doğrulaması, Azure Databricks yapılandırma profilleriyle çalışmaz.

1. Adım: Python için Databricks SDK'sını yükleme veya yükseltme

  1. 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
    
  2. 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()
    
  3. 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 . Desteklenen Azure Databricks kimlik doğrulama türleri 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.widgetsve dbutils.jobs komut gruplarına dbutils.fserişebilir.
  • Azure Databricks kümesine bağlı bir Azure Databricks not defterinden Databricks Yardımcı Programları yalnızca dbutils.fs, dbutils.secretsve dbutils.widgetsdeğil tüm kullanılabilir Databricks Yardımcı Programları komut gruplarına erişebilir. Ayrıca, dbutils.notebook komut grubu yalnızca veya dbutils.notebook.exitgibi dbutils.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 WorkspaceClientkullanı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 kendi başına veya içinde WorkspaceClient kullanamazsınızdbutils. Bunun yerine içinde WorkspaceClientkullanınfiles. Bu kod örneği, belirtilen birimdeki belirtilen dosyanın içeriğini yazdırmak için içinde WorkspaceClient öğesini çağırırfiles.

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

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

Önemli

İş akışları için sunucusuz işlem Genel Önizleme aşamasındadır. Uygunluk ve etkinleştirme hakkında bilgi için bkz . Sunucusuz işlem genel önizlemesini etkinleştirme.

Aşağıdaki örnek, İş Akışları 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",
   )
  ]
)

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.

Örneğin, yeni küme hakkında bilgi döndüren bir create_cluster işlev içeren adlı helpers.py aşağıdaki dosya göz önünde bulundurulduğunda:

# 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

ve işlevini ç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.