قوالب مشروع مجموعة أصول Databricks

تصف هذه المقالة بناء جملة قوالب مجموعة أصول Databricks. تمكن الحزم الإدارة البرمجية لسير عمل Azure Databricks. راجع ما هي حزم أصول Databricks؟

تمكن قوالب الحزم المستخدمين من إنشاء حزم بطريقة متسقة وقابلة للتكرار، من خلال إنشاء بنيات المجلدات وخطوات الإنشاء والمهام والاختبارات وسمات البنية الأساسية كتعليمية أخرى ل DevOps (IaC) الشائعة عبر مسار توزيع بيئة التطوير.

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

تحدد قوالب الحزمة بنية الدليل للحزمة التي سيتم إنشاؤها، وتتضمن databricks.yml.tmpl قالب ملف تكوين بالإضافة databricks_template_schema.json إلى ملف يحتوي على متغيرات مطالبة المستخدم.

استخدام قالب مجموعة افتراضي

لاستخدام قالب حزمة Azure Databricks الافتراضي لإنشاء حزمتك، استخدم الأمر Databricks CLIbundle init، مع تحديد اسم القالب الافتراضي الذي يجب استخدامه. على سبيل المثال، ينشئ الأمر التالي مجموعة باستخدام قالب حزمة Python الافتراضي:

databricks bundle init default-python

إذا لم تحدد قالب افتراضيا، bundle init يقدم الأمر مجموعة القوالب المتوفرة التي يمكنك الاختيار منها.

يوفر Azure Databricks قوالب المجموعة الافتراضية التالية:

قالب ‏‏الوصف
default-python قالب لاستخدام Python مع Databricks. ينشئ هذا القالب حزمة مع مهمة ومسار Delta Live Tables. راجع default-python.
default-sql قالب لاستخدام SQL مع Databricks. يحتوي هذا القالب على ملف تكوين يحدد مهمة تقوم بتشغيل استعلامات SQL على مستودع SQL. راجع default-sql.
dbt-sql قالب يستفيد من dbt-core للتطوير المحلي وحزم النشر. يحتوي هذا القالب على التكوين الذي يحدد مهمة ذات مهمة dbt، بالإضافة إلى ملف تكوين يحدد ملفات تعريف dbt لوظائف dbt المنشورة. راجع dbt-sql.
mlops-stacks قالب مكدس كامل متقدم لبدء مشاريع MLOps Stacks جديدة. راجع mlops-stacks وDatabricks Asset Bundles ل MLOps Stacks.

استخدام قالب حزمة مخصص

لاستخدام قالب حزمة بخلاف قوالب حزمة Azure Databricks الافتراضية، مرر المسار المحلي أو عنوان URL البعيد للقالب إلى الأمر Databricks CLIbundle init.

على سبيل المثال، يستخدم الأمر التالي القالب الذي dab-container-template تم إنشاؤه في البرنامج التعليمي لقالب الحزمة المخصصة:

databricks bundle init /projects/my-custom-bundle-templates/dab-container-template

إنشاء قالب حزمة مخصص

تستخدم قوالب الحزمة بناء جملة قالب حزمة Go. راجع وثائق قالب حزمة Go.

كحد أدنى، يجب أن يحتوي مشروع قالب المجموعة على:

  • databricks_template_schema.json ملف في جذر المشروع يعرف متغير مطالبة مستخدم واحد لاسم مشروع المجموعة.
  • databricks.yml.tmpl ملف موجود في template مجلد يحدد التكوين لأي حزم تم إنشاؤها باستخدام القالب. إذا كان الملف يشير databricks.yml.tmpl إلى أي قوالب تكوين إضافية *.yml.tmpl ، فحدد موقعها في include التعيين.

يمكنك اختياريا إضافة مجلدات فرعية وملفات إلى template المجلد الذي تريد نسخه معكوسا في حزم تم إنشاؤها بواسطة القالب.

تعريف متغيرات مطالبة المستخدم

الخطوة الأولى في إنشاء قالب مجموعة أساسية هي إنشاء مجلد مشروع قالب وملف مسمى databricks_template_schema.json في جذر المشروع. يحتوي هذا الملف على المتغيرات التي يوفر المستخدمون قيم الإدخال لها عند استخدام القالب لإنشاء مجموعة باستخدام bundle init. يتبع تنسيق هذا الملف مواصفات مخطط JSON.

mkdir basic-bundle-template
touch basic-bundle-template/databricks_template_schema.json

أضف ما يلي إلى databricks_template_schema.json الملف، ثم احفظ الملف:

{
   "properties": {
   "project_name": {
      "type": "string",
      "default": "basic_bundle",
      "description": "What is the name of the bundle you want to create?",
      "order": 1
   }
   },
   "success_message": "\nYour bundle '{{.project_name}}' has been created."
}

في هذا الملف:

  • project_name هو اسم متغير الإدخال الوحيد.
  • default هي قيمة افتراضية اختيارية إذا لم يتم توفير قيمة من قبل المستخدم كجزء --config-file من bundle init الأمر، أو تم تجاوزها من قبل المستخدم في موجه الأوامر.
  • description هو مطالبة المستخدم المقترنة بمتغير الإدخال، إذا لم يتم توفير قيمة من قبل المستخدم كجزء --config-file من bundle init الأمر.
  • order هو ترتيب اختياري تظهر فيه كل مطالبة مستخدم إذا لم يتم توفير قيمة من قبل المستخدم كجزء --config-file من bundle init الأمر. إذا order لم يتم توفيرها، فسيظهر المستخدم بالترتيب الذي يتم سردها به في المخطط.
  • success_message هي رسالة اختيارية يتم عرضها عند إنشاء مشروع ناجح.

إنشاء بنية المجلد

بعد ذلك، قم بإنشاء المجلد المطلوب template وإنشاء بنية المجلد داخله. سيتم عكس هذه البنية بواسطة حزم تم إنشاؤها باستخدام هذا القالب. ضع أيضا أي ملفات تريد تضمينها في هذه المجلدات. يخزن قالب الحزمة الأساسي هذا الملفات في src مجلد ويتضمن دفتر ملاحظات بسيطا واحدا.

mkdir -p basic-bundle-template/template/src
touch basic-bundle-template/template/src/simple_notebook.ipynb

أضف ما يلي إلى simple_notebook.ipynb الملف:

print("Hello World!")

تعبئة ملفات قالب التكوين

الآن قم بإنشاء الملف المطلوب databricks.yml.tmpl في template المجلد:

touch basic-bundle-template/template/databricks.yml.tmpl

قم بتعبئة هذا الملف بقالب التكوين الأساسي YAML. ينشئ قالب التكوين هذا اسم المجموعة ووظيفة واحدة باستخدام ملف دفتر الملاحظات المحدد والبيئتين الهدفين للحزم التي تم إنشاؤها باستخدام هذا القالب. كما أنه يستفيد من استبدال الحزمة، وهو ما يوصى به بشدة. راجع استبدالات الحزمة.

# This is the configuration for the Databricks Asset Bundle {{.project_name}}.

bundle:
  name: {{.project_name}}

# The main job for {{.project_name}}
resources:
    jobs:
        {{.project_name}}_job:
        name: {{.project_name}}_job
        tasks:
            - task_key: notebook_task
            job_cluster_key: job_cluster
            notebook_task:
                notebook_path: ../src/simple_notebook.ipynb
        job_clusters:
            - job_cluster_key: job_cluster
            new_cluster:
                node_type_id: i3.xlarge
                spark_version: 13.3.x-scala2.12

targets:
  # The deployment targets. See https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html
  dev:
    mode: development
    default: true
    workspace:
      host: {{workspace_host}}

  prod:
    mode: production
    workspace:
      host: {{workspace_host}}
      root_path: /Shared/.bundle/prod/${bundle.name}
    {{- if not is_service_principal}}
    run_as:
      # This runs as {{user_name}} in production. Alternatively,
      # a service principal could be used here using service_principal_name
      user_name: {{user_name}}
    {{end -}}

اختبار قالب الحزمة

وأخيرا، اختبر القالب الخاص بك. أنشئ مجلد مشروع حزمة جديد، ثم استخدم Databricks CLI لتهيئة مجموعة جديدة باستخدام القالب:

mkdir my-test-bundle
cd my-test-bundle
databricks bundle init ../basic-bundle-template

بالنسبة إلى المطالبة، What is your bundle project name?اكتب my_test_bundle.

بمجرد إنشاء حزمة الاختبار، يتم إخراج رسالة النجاح من ملف المخطط. إذا قمت بفحص محتويات my-test-bundle المجلد، يجب أن ترى ما يلي:

my-test-bundle
   ├── databricks.yml
   └── src
      └── simple_notebook.ipynb

وتم الآن تخصيص ملف databricks.yml:

# This is the configuration for the Databricks Asset Bundle my-test-bundle.

bundle:
  name: my-test-bundle

# The main job for my-test-bundle
resources:
    jobs:
        my-test-bundle_job:
        name: my-test-bundle_job
        tasks:
            - task_key: notebook_task
                job_cluster_key: job_cluster
                notebook_task:
                    notebook_path: ../src/simple_notebook.ipynb
        job_clusters:
            - job_cluster_key: job_cluster
                new_cluster:
                    node_type_id: i3.xlarge
                    spark_version: 13.3.x-scala2.12

targets:
  # The 'dev' target, used for development purposes. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#development-mode)
  dev:
    mode: development
    default: true
    workspace:
      host: https://my-host.cloud.databricks.com

  # The 'prod' target, used for production deployment. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#production-mode)
  prod:
    mode: production
    workspace:
      host: https://my-host.cloud.databricks.com
      root_path: /Shared/.bundle/prod/${bundle.name}
    run_as:
      # This runs as someone@example.com in production. Alternatively,
      # a service principal could be used here using service_principal_name
      user_name: someone@example.com

مشاركة القالب

إذا كنت ترغب في مشاركة قالب الحزمة هذا مع الآخرين، يمكنك تخزينه في التحكم بالإصدار مع أي موفر يدعمه Git ويمكن للمستخدمين الوصول إليه. لتشغيل bundle init الأمر باستخدام عنوان URL Git، تأكد من أن databricks_template_schema.json الملف في الموقع الجذر بالنسبة إلى عنوان URL Git هذا.

تلميح

يمكنك وضع databricks_template_schema.json الملف في مجلد مختلف، بالنسبة إلى جذر المجموعة. يمكنك بعد ذلك استخدام bundle init خيار الأمر --template-dir للإشارة إلى هذا المجلد، الذي يحتوي على databricks_template_schema.json الملف.

الخطوات التالية