Databricks SDK ل Python

في هذه المقالة، ستتعلم كيفية أتمتة العمليات في حسابات Azure Databricks ومساحات العمل والموارد ذات الصلة باستخدام Databricks SDK ل Python. تكمل هذه المقالة Databricks SDK لوثائق Python على قراءة المستندات وأمثلة التعليمات البرمجية في مستودع Databricks SDK ل Python في GitHub.

إشعار

هذه الميزة في Beta ولا بأس من استخدامها في الإنتاج.

خلال فترة بيتا، توصي Databricks بتثبيت تبعية على الإصدار الثانوي المحدد من Databricks SDK ل Python الذي تعتمد عليه التعليمات البرمجية الخاصة بك. على سبيل المثال، يمكنك تثبيت التبعيات في ملفات مثل requirements.txt ، venvأو pyproject.toml للشعر poetry.lock . لمزيد من المعلومات حول تثبيت التبعيات، راجع البيئات الظاهرية والحزم ل venv، أو تثبيت التبعيات للشعر.

قبل البدء

يمكنك استخدام Databricks SDK ل Python من داخل دفتر ملاحظات Azure Databricks أو من جهاز التطوير المحلي.

  • لاستخدام Databricks SDK ل Python من داخل دفتر ملاحظات Azure Databricks، انتقل إلى استخدام Databricks SDK ل Python من دفتر ملاحظات Azure Databricks.
  • لاستخدام Databricks SDK ل Python من جهاز التطوير المحلي، أكمل الخطوات الواردة في هذا القسم.

قبل البدء في استخدام Databricks SDK ل Python، يجب أن يحتوي جهاز التطوير الخاص بك على:

  • تم تكوين مصادقة Azure Databricks.
  • تم تثبيت Python 3.8 أو أعلى. لأتمتة موارد حساب Azure Databricks، توصي Databricks بأن يكون لديك الإصدارات الرئيسية والثانوية من Python المثبتة التي تطابق الإصدار المثبت على مورد حساب Azure Databricks الهدف. تعتمد أمثلة هذه المقالة على أتمتة المجموعات باستخدام Databricks Runtime 13.3 LTS، الذي تم تثبيت Python 3.10 عليه. للحصول على الإصدار الصحيح، راجع إصدارات ملاحظات إصدار Databricks Runtime والتوافق لإصدار Databricks Runtime لنظام المجموعة.
  • توصي Databricks بإنشاء وتنشيط بيئة Python الظاهرية لكل مشروع Python تستخدمه مع Databricks SDK ل Python. تساعد بيئات Python الظاهرية على التأكد من أن مشروع التعليمات البرمجية يستخدم إصدارات متوافقة من حزم Python وPython (في هذه الحالة، Databricks SDK لحزمة Python). لمزيد من المعلومات حول بيئات Python الظاهرية، راجع venv أو الشعر.

بدء استخدام Databricks SDK ل Python

يصف هذا القسم كيفية البدء باستخدام Databricks SDK ل Python من جهاز التطوير المحلي الخاص بك. لاستخدام Databricks SDK ل Python من داخل دفتر ملاحظات Azure Databricks، انتقل إلى استخدام Databricks SDK ل Python من دفتر ملاحظات Azure Databricks.

  1. على جهاز التطوير الخاص بك مع تكوين مصادقة Azure Databricks وPython المثبتة بالفعل وبيئة Python الظاهرية التي تم تنشيطها بالفعل، قم بتثبيت حزمة databricks-sdk (وتبعياتها) من فهرس حزمة Python (PyPI)، كما يلي:

    Venv

    استخدم pip لتثبيت الحزمة databricks-sdk . (في بعض الأنظمة، قد تحتاج إلى استبدال pip3 ب pip، هنا وفي جميع أنحاء.)

    pip3 install databricks-sdk
    

    شعر

    poetry add databricks-sdk
    

    لتثبيت إصدار معين من الحزمة databricks-sdk أثناء وجود Databricks SDK ل Python في Beta، راجع محفوظات إصدار الحزمة. على سبيل المثال، لتثبيت الإصدار 0.1.6:

    Venv

    pip3 install databricks-sdk==0.1.6
    

    شعر

    poetry add databricks-sdk==0.1.6
    

    لترقية تثبيت موجود من Databricks SDK لحزمة Python إلى أحدث إصدار، قم بتشغيل الأمر التالي:

    Venv

    pip3 install --upgrade databricks-sdk
    

    شعر

    poetry add databricks-sdk@latest
    

    لإظهار Databricks SDK لحزمة Python الحالية Version والتفاصيل الأخرى، قم بتشغيل الأمر التالي:

    Venv

    pip3 show databricks-sdk
    

    شعر

    poetry show databricks-sdk
    
  2. في بيئة Python الظاهرية، قم بإنشاء ملف تعليمة برمجية Python الذي يستورد Databricks SDK ل Python. المثال التالي، في ملف يسمى main.py بالمحتويات التالية، يسرد ببساطة جميع المجموعات في مساحة عمل Azure Databricks:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    
    for c in w.clusters.list():
      print(c.cluster_name)
    
  3. قم بتشغيل ملف التعليمات البرمجية ل Python الخاص بك، بافتراض ملف يسمى main.py، عن طريق تشغيل python الأمر :

    Venv

    python3.10 main.py
    

    شعر

    إذا كنت في غلاف البيئة الظاهرية:

    python3.10 main.py
    

    إذا لم تكن في غلاف البيئة الظاهرية:

    poetry run python3.10 main.py
    

    إشعار

    من خلال عدم تعيين أي وسيطات في الاستدعاء السابق إلى w = WorkspaceClient()، يستخدم Databricks SDK ل Python العملية الافتراضية لمحاولة تنفيذ مصادقة Azure Databricks. لتجاوز هذا السلوك الافتراضي، راجع قسم المصادقة التالي.

مصادقة Databricks SDK ل Python باستخدام حساب Azure Databricks أو مساحة العمل

يصف هذا القسم كيفية مصادقة Databricks SDK ل Python من جهاز التطوير المحلي إلى حساب Azure Databricks أو مساحة العمل الخاصة بك. لمصادقة Databricks SDK ل Python من داخل دفتر ملاحظات Azure Databricks، انتقل إلى استخدام Databricks SDK ل Python من دفتر ملاحظات Azure Databricks.

ينفذ Databricks SDK ل Python معيار المصادقة الموحد لعميل Databricks، وهو نهج معماري وبرنامجي موحد ومتسق للمصادقة. يساعد هذا الأسلوب على جعل إعداد المصادقة وأتمتتها باستخدام Azure Databricks أكثر مركزية وقابلية للتنبؤ. يمكنك من تكوين مصادقة Databricks مرة واحدة ثم استخدام هذا التكوين عبر أدوات Databricks متعددة وSDKs دون مزيد من تغييرات تكوين المصادقة. لمزيد من المعلومات، بما في ذلك أمثلة التعليمات البرمجية الأكثر اكتمالا في Python، راجع مصادقة عميل Databricks الموحدة.

إشعار

لم تقم Databricks SDK ل Python بعد بتنفيذ مصادقة الهويات المدارة من Azure.

تتضمن بعض أنماط الترميز المتوفرة لتهيئة مصادقة Databricks باستخدام Databricks SDK ل Python ما يلي:

  • استخدم المصادقة الافتراضية ل Databricks عن طريق القيام بأحد الإجراءات التالية:

    • إنشاء أو تحديد ملف تعريف تكوين Databricks مخصص مع الحقول المطلوبة لنوع مصادقة Databricks الهدف. ثم قم بتعيين DATABRICKS_CONFIG_PROFILE متغير البيئة إلى اسم ملف تعريف التكوين المخصص.
    • تعيين متغيرات البيئة المطلوبة لنوع مصادقة Databricks الهدف.

    ثم قم بإنشاء مثيل على سبيل المثال لعنصر WorkspaceClient مع مصادقة Databricks الافتراضية كما يلي:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    # ...
    
  • الترميز المضمن للحاويات المطلوبة مدعوم ولكن غير مستحسن، لأنه يخاطر بكشف المعلومات الحساسة في التعليمات البرمجية الخاصة بك، مثل الرموز المميزة للوصول الشخصي ل Azure Databricks. المثال التالي للرموز الثابتة لمضيف Azure Databricks وقيم الرمز المميز للوصول لمصادقة رمز Databricks المميز:

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

راجع أيضا المصادقة في Databricks SDK لوثائق Python.

استخدام Databricks SDK ل Python من دفتر ملاحظات Azure Databricks

يمكنك استدعاء Databricks SDK لوظائف Python من دفتر ملاحظات Azure Databricks يحتوي على مجموعة Azure Databricks مرفقة مع تثبيت Databricks SDK ل Python. يتم تثبيته بشكل افتراضي على جميع مجموعات Azure Databricks التي تستخدم Databricks Runtime 13.3 LTS أو أعلى. بالنسبة لمجموعات Azure Databricks التي تستخدم Databricks Runtime 12.2 LTS والإصدارات أدناه، يجب تثبيت Databricks SDK ل Python أولا. راجع الخطوة 1: تثبيت Databricks SDK ل Python أو ترقيته.

لمشاهدة Databricks SDK لإصدار Python المثبت لإصدار Databricks Runtime معين، راجع قسم مكتبات Python المثبتة في ملاحظات إصدار Databricks Runtime لهذا الإصدار.

توصي Databricks بتثبيت أحدث إصدار متوفر من SDK من PiPy، ولكن كحد أدنى تثبيت أو ترقية إلى Databricks SDK ل Python 0.6.0 أو أعلى، حيث يتم استخدام مصادقة دفتر ملاحظات Azure Databricks الافتراضية بواسطة الإصدار 0.6.0 وما فوق على جميع إصدارات وقت تشغيل Databricks.

إشعار

Databricks Runtime 15.1 هو وقت تشغيل Databricks الأول الذي تم تثبيت إصدار من Databricks SDK ل Python (0.20.0) الذي يدعم مصادقة دفتر الملاحظات الافتراضية دون الحاجة إلى ترقية.

يوضح الجدول التالي دعم مصادقة دفتر الملاحظات ل Databricks SDK لإصدارات وقت تشغيل Python وDatabricks:

SDK/DBR 10.4 LTS 11.3 LTS 12.3 LTS 13.3 LTS 14.3 LTS 15.1 وما فوق
0.1.7 وما دونه
0.1.10
0.6.0
0.20.0 وما فوق

تعتمد مصادقة دفتر ملاحظات Azure Databricks الافتراضية على رمز وصول شخصي مؤقت ل Azure Databricks يقوم Azure Databricks بإنشاءه تلقائيا في الخلفية لاستخدامه الخاص. يحذف Azure Databricks هذا الرمز المميز المؤقت بعد توقف دفتر الملاحظات عن التشغيل.

هام

  • تعمل مصادقة دفتر ملاحظات Azure Databricks الافتراضية فقط على عقدة برنامج تشغيل نظام المجموعة وليس على أي من عقد عامل نظام المجموعة أو المنفذ.
  • لا تعمل مصادقة دفتر ملاحظات Azure Databricks مع ملفات تعريف تكوين Azure Databricks.

إذا كنت ترغب في استدعاء واجهات برمجة التطبيقات على مستوى حساب Azure Databricks أو إذا كنت تريد استخدام نوع مصادقة Databricks بخلاف مصادقة دفتر ملاحظات Databricks الافتراضية، يتم دعم أنواع المصادقة التالية أيضا:

نوع المصادقة Databricks SDK لإصدارات Python
مصادقة OAuth من جهاز إلى جهاز (M2M) 0.18.0 وما فوق
مصادقة OAuth من مستخدم إلى جهاز (U2M) 0.19.0 وما فوق
المصادقة الأساسية لخدمة معرف Microsoft Entra جميع الإصدارات
مصادقة Azure CLI جميع الإصدارات
مصادقة رمز الوصول الشخصي ل Databricks جميع الإصدارات

مصادقة الهويات المدارة من Azure غير مدعومة بعد.

الخطوة 1: تثبيت أو ترقية Databricks SDK ل Python

  1. يمكن لدفاتر ملاحظات Azure Databricks Python استخدام Databricks SDK ل Python تماما مثل أي مكتبة Python أخرى. لتثبيت أو ترقية Databricks SDK لمكتبة Python على مجموعة Azure Databricks المرفقة، قم بتشغيل %pip الأمر السحري من خلية دفتر ملاحظات كما يلي:

    %pip install databricks-sdk --upgrade
    
  2. بعد تشغيل %pip الأمر السحري، يجب إعادة تشغيل Python لجعل المكتبة المثبتة أو التي تمت ترقيتها متاحة لدفتر الملاحظات. للقيام بذلك، قم بتشغيل الأمر التالي من خلية دفتر ملاحظات مباشرة بعد الخلية %pip باستخدام الأمر السحري:

    dbutils.library.restartPython()
    
  3. لعرض الإصدار المثبت من Databricks SDK ل Python، قم بتشغيل الأمر التالي من خلية دفتر ملاحظات:

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

الخطوة 2: تشغيل التعليمات البرمجية الخاصة بك

في خلايا دفتر الملاحظات، أنشئ تعليمة Python البرمجية التي تستورد ثم تستدعي Databricks SDK ل Python. يستخدم المثال التالي مصادقة دفتر ملاحظات Azure Databricks الافتراضية لسرد جميع المجموعات في مساحة عمل Azure Databricks:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

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

عند تشغيل هذه الخلية، تظهر قائمة بأسماء كافة المجموعات المتوفرة في مساحة عمل Azure Databricks.

لاستخدام نوع مصادقة Azure Databricks مختلف، راجع أساليب مصادقة Azure Databricks وانقر فوق الارتباط المقابل للحصول على تفاصيل تقنية إضافية.

استخدام أدوات Databricks المساعدة

يمكنك استدعاء مرجع Databricks Utilities (dbutils) من Databricks SDK لرمز Python الذي يعمل على جهاز التطوير المحلي أو من داخل دفتر ملاحظات Azure Databricks.

  • من جهاز التطوير المحلي الخاص بك، تتمتع أدوات Databricks المساعدة بالوصول فقط إلى dbutils.fsdbutils.secretsdbutils.widgetsمجموعات الأوامر وdbutils.jobs.
  • من دفتر ملاحظات Azure Databricks المرفق بمجموعة Azure Databricks، تتمتع Databricks Utilities بالوصول إلى جميع مجموعات أوامر Databricks Utilities المتوفرة، وليس فقط dbutils.fsو dbutils.secretsو.dbutils.widgets بالإضافة إلى ذلك، dbutils.notebook تقتصر مجموعة الأوامر على مستويين من الأوامر فقط، على سبيل المثال dbutils.notebook.run أو dbutils.notebook.exit.

لاستدعاء Databricks Utilities إما من جهاز التطوير المحلي أو دفتر ملاحظات Azure Databricks، استخدم dbutils داخل WorkspaceClient. يستخدم مثال التعليمات البرمجية هذا مصادقة دفتر ملاحظات Azure Databricks الافتراضية للاتصال dbutils داخل WorkspaceClient لسرد مسارات كافة الكائنات في جذر DBFS لمساحة العمل.

from databricks.sdk import WorkspaceClient

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

for f in d:
  print(f.path)

بدلا من ذلك، يمكنك الاتصال dbutils مباشرة. ومع ذلك، تقتصر على استخدام مصادقة دفتر ملاحظات Azure Databricks الافتراضية فقط. يستدعي dbutils مثال التعليمات البرمجية هذا مباشرة لسرد كافة الكائنات في جذر DBFS لمساحة العمل.

from databricks.sdk.runtime import *

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

for f in d:
  print(f.path)

للوصول إلى وحدات تخزين كتالوج Unity، استخدم files داخل WorkspaceClient. راجع إدارة الملفات في وحدات تخزين كتالوج Unity. لا يمكنك استخدام dbutils نفسها أو داخلها WorkspaceClient للوصول إلى وحدات التخزين.

راجع أيضا التفاعل مع الدبوت.

أمثلة على التعليمات البرمجية

توضح أمثلة التعليمات البرمجية التالية كيفية استخدام Databricks SDK ل Python لإنشاء وحذف المجموعات وتشغيل المهام وسرد المجموعات على مستوى الحساب. تستخدم أمثلة التعليمات البرمجية هذه مصادقة دفتر ملاحظات Azure Databricks الافتراضية. للحصول على تفاصيل حول مصادقة دفتر ملاحظات Azure Databricks الافتراضية، راجع استخدام Databricks SDK ل Python من دفتر ملاحظات Azure Databricks. للحصول على تفاصيل حول المصادقة الافتراضية خارج دفاتر الملاحظات، راجع مصادقة Databricks SDK ل Python باستخدام حساب Azure Databricks أو مساحة العمل الخاصة بك.

للحصول على أمثلة تعليمات برمجية إضافية، راجع الأمثلة في Databricks SDK لمستودع Python في GitHub. راجع أيضًا:

إنشاء نظام مجموعة

ينشئ مثال التعليمات البرمجية هذا مجموعة مع إصدار Databricks Runtime المحدد ونوع عقدة نظام المجموعة. تحتوي هذه المجموعة على عامل واحد، وسيتم إنهاء المجموعة تلقائيا بعد 15 دقيقة من وقت الخمول.

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

حذف مجموعة بشكل دائم

يحذف مثال التعليمات البرمجية هذا نظام المجموعة بمعرف نظام المجموعة المحدد من مساحة العمل بشكل دائم.

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)

قم بإنشاء وظيفة

ينشئ مثال التعليمات البرمجية هذا مهمة Azure Databricks التي تشغل دفتر الملاحظات المحدد على نظام المجموعة المحدد. أثناء تشغيل التعليمات البرمجية، فإنه يحصل على مسار دفتر الملاحظات الحالي، ومعرف نظام المجموعة الحالي، وإعدادات المهمة ذات الصلة من المستخدم في المحطة الطرفية.

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

إنشاء مهمة تستخدم الحوسبة بلا خادم

ينشئ المثال التالي مهمة تستخدم حساب بلا خادم للوظائف:

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

يوضح مثال التعليمات البرمجية هذا استدعاءات مختلفة للوظائف files داخل WorkspaceClient للوصول إلى وحدة تخزين كتالوج Unity.

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)

سرد المجموعات على مستوى الحساب

يسرد مثال التعليمات البرمجية هذا أسماء العرض لجميع المجموعات المتوفرة داخل حساب Azure Databricks.

from databricks.sdk import AccountClient

a = AccountClient()

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

الاختبار

لاختبار التعليمات البرمجية الخاصة بك، استخدم أطر عمل اختبار Python مثل pytest. لاختبار التعليمات البرمجية الخاصة بك في ظل ظروف محاكاة دون استدعاء نقاط نهاية Azure Databricks REST API أو تغيير حالة حسابات Azure Databricks أو مساحات العمل الخاصة بك، استخدم مكتبات محاكاة Python مثل unittest.mock.

على سبيل المثال، بالنظر إلى الملف التالي المسمى helpers.py الذي يحتوي على دالة create_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

وبالنظر إلى الملف التالي المسمى main.py الذي يستدعي الدالة 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)

يختبر الملف التالي المسمى test_helpers.py ما إذا كانت الدالة create_cluster ترجع الاستجابة المتوقعة. بدلا من إنشاء نظام مجموعة في مساحة العمل الهدف، يقوم هذا الاختبار بالسخرية من كائن WorkspaceClient ، ويحدد إعدادات الكائن المقلد، ثم يمرر الكائن المقلد إلى create_cluster الوظيفة. ثم يتحقق الاختبار ما إذا كانت الدالة ترجع المعرف المتوقع لنظام المجموعة المقلدة الجديد.

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

لتشغيل هذا الاختبار، قم بتشغيل pytest الأمر من جذر مشروع التعليمات البرمجية، والذي يجب أن ينتج عنه نتائج اختبار مشابهة للآتي:

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

الموارد الإضافية

لمزيد من المعلومات، راجع: