Bagikan melalui


Mode penyebaran Bundel Aset Databricks

Artikel ini menguraikan sintaks untuk mode penyebaran Bundel Aset Databricks. Bundel memungkinkan manajemen terprogram alur kerja Azure Databricks. Lihat Apa itu Bundel Aset Databricks?

Dalam alur kerja CI/CD, pengembang biasanya membuat kode, menguji, menyebarkan, dan menjalankan solusi dalam berbagai fase, atau mode. Misalnya, set mode paling sederhana mencakup mode pengembangan untuk validasi pra-produksi, diikuti dengan mode produksi untuk hasil yang divalidasi. Bundel Aset Databricks menyediakan koleksi opsional perilaku default yang sesuai dengan masing-masing mode ini. Untuk menggunakan perilaku ini untuk target tertentu, atur mode atau konfigurasikan presets untuk target dalam targets pemetaan konfigurasi. Untuk informasi tentang targets, lihat pemetaan target konfigurasi bundel.

Mode pengembangan

Untuk menyebarkan bundel Anda dalam mode pengembangan, Anda harus terlebih dahulu menambahkan mode pemetaan, mengatur ke development, ke target yang dimaksudkan. Misalnya, target bernama dev ini diperlakukan sebagai target pengembangan:

targets:
  dev:
    mode: development

Menyebarkan target dalam mode pengembangan dengan menjalankan databricks bundle deploy -t <target-name> perintah mengimplementasikan perilaku berikut, yang dapat disesuaikan menggunakan preset:

  • Menambahkan semua sumber daya yang tidak disebarkan sebagai file atau notebook dengan awalan [dev ${workspace.current_user.short_name}] dan menandai setiap pekerjaan dan alur yang dev disebarkan dengan tag Azure Databricks.
  • Menandai semua alur Tabel Langsung Delta yang disebarkan terkait sebagai development: true. Lihat Menggunakan mode pengembangan untuk menjalankan pembaruan alur.
  • Memungkinkan penggunaan --compute-id <cluster-id> dalam panggilan terkait ke bundle deploy perintah, yang mengambil alih salah satu dan semua definisi kluster yang sudah ditentukan dalam file konfigurasi bundel terkait. Alih-alih menggunakan --compute-id <cluster-id> panggilan terkait ke bundle deploy perintah, Anda dapat mengatur compute_id pemetaan di sini, atau sebagai pemetaan anak dari bundle pemetaan, ke ID kluster yang akan digunakan.
  • Menjeda semua jadwal dan pemicu pada sumber daya yang disebarkan seperti pekerjaan atau monitor kualitas. Batalkan jeda jadwal dan pemicu untuk pekerjaan individual dengan mengatur schedule.pause_status ke UNPAUSED.
  • Memungkinkan eksekusi bersamaan pada semua pekerjaan yang disebarkan untuk iterasi yang lebih cepat. Nonaktifkan eksekusi bersamaan untuk pekerjaan individual dengan mengatur max_concurrent_runs ke 1.
  • Menonaktifkan kunci penyebaran untuk iterasi yang lebih cepat. Kunci ini mencegah konflik penyebaran yang tidak mungkin terjadi dalam mode dev. Aktifkan kembali kunci dengan mengatur bundle.deployment.lock.enabled ke true.

Mode produksi

Untuk menyebarkan bundel Anda dalam mode produksi, Anda harus terlebih dahulu menambahkan mode pemetaan, diatur ke production, ke target yang dimaksudkan. Misalnya, target bernama prod ini diperlakukan sebagai target produksi:

targets:
  prod:
    mode: production

Menyebarkan target dalam mode produksi dengan menjalankan databricks bundle deploy -t <target-name> perintah mengimplementasikan perilaku berikut:

  • Memvalidasi bahwa semua alur Tabel Langsung Delta yang disebarkan terkait ditandai sebagai development: false.

  • Memvalidasi bahwa cabang Git saat ini sama dengan cabang Git yang ditentukan dalam target. Menentukan cabang Git dalam target bersifat opsional dan dapat dilakukan dengan properti tambahan git sebagai berikut:

    git:
      branch: main
    

    Validasi ini dapat ditimpa dengan menentukan --force saat menyebarkan.

  • Databricks merekomendasikan agar Anda menggunakan perwakilan layanan untuk penyebaran produksi. Anda dapat memberlakukan ini dengan mengatur run_as ke perwakilan layanan. Lihat Mengelola perwakilan layanan dan Menentukan identitas eksekusi untuk alur kerja Bundel Aset Databricks. Jika Anda tidak menggunakan perwakilan layanan, perhatikan perilaku tambahan berikut:

    • Memvalidasi bahwa artifact_pathpemetaan , file_path, root_path, atau state_path tidak ditimpa ke pengguna tertentu.
    • Memvalidasi bahwa run_as pemetaan dan permissions ditentukan untuk mengklarifikasi identitas mana yang memiliki izin khusus untuk penyebaran.
  • Tidak seperti perilaku sebelumnya untuk mengatur mode pemetaan ke development, mengatur mode pemetaan ke production tidak memungkinkan pengesampingan definisi kluster yang ada yang ditentukan dalam file konfigurasi bundel terkait, misalnya dengan menggunakan --compute-id <cluster-id> opsi atau compute_id pemetaan.

Preset kustom

Bundel Aset Databricks mendukung prasetel yang dapat dikonfigurasi untuk target, yang memungkinkan Anda menyesuaikan perilaku untuk target. Prasetel yang tersedia tercantum dalam tabel berikut:

Preset Deskripsi
name_prefix String awalan untuk diawali ke nama sumber daya.
pipelines_development Apakah alur berada dalam mode pengembangan atau tidak. Nilai yang valid adalah true atau false.
trigger_pause_status Status jeda untuk diterapkan ke semua pemicu dan jadwal. Nilai yang valid adalah PAUSED atau UNPAUSED.
jobs_max_concurrent_runs Jumlah maksimum eksekusi bersamaan yang diizinkan untuk pekerjaan.
tags Sekumpulan tag kunci:nilai yang berlaku untuk semua sumber daya yang mendukung tag, yang mencakup pekerjaan dan eksperimen. Bundel Aset Databricks tidak mendukung tag untuk schema sumber daya.

Catatan

Jika keduanya mode dan presets diatur, prasetel mengambil alih perilaku mode default, dan pengaturan sumber daya individual mengambil alih prasetel. Misalnya, jika jadwal diatur ke UNPAUSED, tetapi trigger_pause_status prasetel diatur ke PAUSED, jadwal tidak digunakan.

Contoh berikut menunjukkan konfigurasi prasetel kustom untuk target bernama dev:

targets:
  dev:
    presets:
      name_prefix: "testing_"      # prefix all resource names with testing_
      pipelines_development: true  # set development to true for pipelines
      trigger_pause_status: PAUSED # set pause_status to PAUSED for all triggers and schedules
      jobs_max_concurrent_runs: 10 # set max_concurrent runs to 10 for all jobs
      tags:
        department: finance