Bagikan melalui


Templat proyek Bundel Aset Databricks

Bundel Aset Databricks menjelaskan sumber daya Databricks seperti pekerjaan, alur, dan notebook sebagai file sumber, memungkinkan Anda untuk menyertakan metadata bersama file sumber ini untuk menyediakan infrastruktur dan sumber daya lainnya, dan menyediakan definisi menyeluruh dari proyek, semuanya dikemas sebagai satu proyek yang dapat disebarkan. Lihat Apa itu Bundel Aset Databricks?.

Templat bundel memungkinkan pengguna membuat bundel dengan cara yang konsisten dan dapat diulang, dengan membuat struktur folder, membuat langkah dan tugas, pengujian, dan atribut infrastruktur sebagai kode (IaC) DevOps lainnya yang umum di seluruh alur penyebaran.

Misalnya, jika Anda secara rutin menjalankan pekerjaan Databricks yang memerlukan paket kustom dengan langkah kompilasi yang memakan waktu setelah penginstalan, Anda dapat mempercepat perulangan pengembangan dengan membuat templat bundel yang menentukan lingkungan kontainer kustom.

Databricks menyediakan sekumpulan templat bundel default , tetapi Anda juga dapat membuat templat bundel kustom . Pengguna kemudian dapat menginisialisasi bundel menggunakan perintah init bundel , menentukan templat default atau templat kustom Anda.

Membuat bundel menggunakan templat

Untuk menggunakan templat bundel Azure Databricks untuk membuat bundel Anda, gunakan perintah Databricks CLIbundle init, menentukan nama templat yang akan digunakan. Misalnya, perintah berikut membuat bundel menggunakan templat bundel Python default:

databricks bundle init default-python

Untuk menggunakan templat bundel kustom, teruskan jalur lokal atau URL jarak jauh templat ke perintah Databricks CLIbundle init.

Misalnya, perintah berikut menggunakan templat dab-container-template yang dibuat dalam Tutorial Templat Bundel Kustom:

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

Jika Anda tidak menentukan templat, perintah bundle init akan menampilkan kumpulan templat default yang tersedia yang bisa Anda pilih.

Templat bundel bawaan

Azure Databricks menyediakan templat bundel default berikut:

Templat Deskripsi
default-python Templat untuk menggunakan Python dengan Databricks. Templat ini membuat bundel dengan tugas dan alur pemrosesan DLT. Lihat default-python.
default-sql Templat untuk menggunakan SQL dengan Databricks. Templat ini berisi file konfigurasi yang menentukan pekerjaan yang menjalankan kueri SQL pada gudang SQL. Lihat default-sql.
dbt-sql Templat yang memanfaatkan dbt-core untuk pengembangan lokal dan paket untuk penyebaran. Templat ini berisi konfigurasi yang menentukan pekerjaan dengan tugas dbt, serta file konfigurasi yang menentukan profil dbt untuk pekerjaan dbt yang disebarkan. Lihat dbt-sql.
mlops-stacks Template full stack yang canggih untuk memulai proyek baru MLOps Stacks. Lihat mlops-stacks dan Databricks Asset Bundles untuk MLOps Stacks.

templat bundel kustom

Templat bundel menggunakan sintaks templat paket Go, yang memberikan fleksibilitas pada templat bundel kustom yang dapat Anda buat. Lihat dokumentasi templat paket Go.

struktur proyek templat

Minimal, proyek templat bundel harus memiliki:

  • File databricks_template_schema.json di direktori akar proyek yang mendefinisikan satu properti prompt pengguna untuk nama proyek bundel. Lihat skema Templat .
  • File databricks.yml.tmpl yang terletak di dalam folder template yang menentukan konfigurasi bagi setiap bundel yang dibuat menggunakan templat. Jika file Anda databricks.yml.tmpl merujuk pada templat konfigurasi tambahan *.yml.tmpl, tentukan lokasinya dalam pemetaan include. Lihat templat konfigurasi .

Selain itu, struktur folder dan file yang disertakan dari proyek templat bundel template folder dicerminkan oleh bundel yang dibuat dengan templat. Misalnya, jika Anda ingin templat menghasilkan bundel dengan buku catatan sederhana di folder src dan definisi pekerjaan yang menjalankan buku catatan di folder resources, Anda akan mengatur proyek templat Anda seperti ini:

basic-bundle-template
  ├── databricks_template_schema.json
  └── template
      └── {{.project_name}}
          ├── databricks.yml.tmpl
          ├── resources
          │   └── {{.project_name}}_job.yml.tmpl
          └── src
              └── simple_notebook.ipynb

Tips

Nama folder proyek dan nama file definisi pekerjaan dalam templat bundel ini menggunakan variabel templat. Untuk informasi tentang pembantu dan variabel templat, lihat Pembantu templat dan variabel.

Skema Templat

Proyek templat bundel kustom harus berisi databricks_template_schema.jsonfile JSON di root proyek. File ini menentukan bidang yang digunakan oleh Databricks CLI saat perintah bundle init dijalankan, seperti teks perintah.

File databricks_template_schema.json dasar berikut mendefinisikan variabel input project_name untuk proyek bundel, yang mencakup pesan perintah dan nilai default. Kemudian mendefinisikan pesan sukses untuk inisialisasi proyek bunde yang menggunakan nilai variabel input dalam pesan.

{
  "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."
}

Bidang skema templat

File databricks_template_schema.json mendukung menentukan variabel input untuk mengumpulkan informasi selama inisialisasi bundel dari pengguna Anda dalam bidang properties, serta bidang tambahan untuk menyesuaikan inisialisasi.

Variabel input didefinisikan dalam bidang properties skema templat. Setiap variabel input mendefinisikan metadata yang diperlukan untuk menyajikan permintaan kepada pengguna selama initalisasi bundel. Nilai variabel kemudian dapat diakses menggunakan sintaks variabel templat, seperti {{.project_name}}.

Anda juga dapat mengatur nilai beberapa bidang untuk menyesuaikan proses inisialisasi bundel.

Bidang skema yang didukung tercantum dalam tabel berikut.

Bidang skema Deskripsi
properties Pendefinisian variabel input untuk templat bundel. Databricks merekomendasikan untuk menentukan setidaknya satu variabel input yang merupakan nama proyek bundel.
properties.<variable_name> Nama variabel input.
properties.<variable_name>.default Nilai default untuk digunakan jika nilai tidak disediakan oleh pengguna dengan --config-file sebagai bagian dari perintah bundle init, atau di baris perintah saat diminta.
properties.<variable_name>.description Pesan permintaan pengguna yang terkait dengan variabel input.
properties.<variable_name>.enum Daftar nilai yang mungkin untuk properti , seperti "enum": ["azure", "aws", "gcp"]. Jika bidang ini ditentukan, Databricks CLI menyajikan nilai dalam daftar di baris perintah untuk meminta pengguna memilih nilai.
properties.<variable_name>.order Bilangan bulat yang menentukan urutan relatif untuk properti input. Ini mengontrol urutan di mana perintah untuk variabel input ini ditampilkan di baris perintah.
properties.<variable_name>.pattern Pola regexp yang digunakan untuk memvalidasi input pengguna, misalnya "pattern": "^[^ .\\\\/]{3,}$". Untuk sintaks regexp yang didukung, lihat https://github.com/google/re2/wiki/Syntax.
properties.<variable_name>.pattern_match_failure_message Pesan yang ditampilkan kepada pengguna jika nilai yang dimasukkan oleh pengguna tidak cocok dengan pola yang ditentukan, misalnya, Project name must be at least 3 characters long and cannot contain the following characters: \"\\\", \"/\", \" \" and \".\".".
properties.<variable_name>.skip_prompt_if Lewati permintaan untuk variabel input jika skema ini dipenuhi oleh konfigurasi yang sudah ada. Dalam hal ini nilai default properti digunakan sebagai gantinya. Misalnya, lihat templat mlops-stacks . Hanya perbandingan const yang didukung.
properties.<variable_name>.skip_prompt_if.properties.<previous_variable_name>.const Jika nilai untuk <previous_variable_name> cocok dengan konstanta yang dikonfigurasi di skip_prompt_if, maka permintaan untuk <variable_name> akan dilewati.
welcome_message Pesan pertama yang dihasilkan sebelum meminta pengguna untuk memberikan input.
success_message Pesan yang akan dicetak setelah templat berhasil diinisialisasi.
min_databricks_cli_version Versi minimum semver dari Databricks CLI yang diperlukan oleh templat ini. databricks bundle init gagal jika versi CLI kurang dari versi ini.
version Dicadangkan untuk penggunaan di masa mendatang. Versi skema. Ini digunakan untuk menentukan apakah skema kompatibel dengan versi CLI saat ini.

templat Konfigurasi

Templat bundel kustom harus berisi file databricks.yml.tmpl di folder template dalam proyek templat bundel yang digunakan untuk membuat proyek bundel databricks.yml file konfigurasi. Templat untuk file konfigurasi untuk sumber daya dapat dibuat di folder resources. Isi file templat ini dengan YAML templat konfigurasi.

Contoh templat konfigurasi sederhana berikut untuk databricks.yml dan *_job.yml terkait menetapkan nama bundel dan dua lingkungan target, serta mendefinisikan tugas yang menjalankan notebook di dalam bundel, untuk bundel yang dibuat menggunakan templat ini. Templat konfigurasi ini memanfaatkan substitusi bundel dan serta pembantu templat bundel .

template/{{.project_name}}/databricks.yml.tmpl:

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

bundle:
  name: {{.project_name}}

include:
  - resources/*.yml

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 -}}

template/{{.project_name}}/resources/{{.project_name}}_job.yml.tmpl:

# {{.project_name}}_job.yml
# 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

Pembantu dan variabel Templat

Pembantu templat adalah fungsi yang disediakan oleh Databricks yang dapat Anda gunakan dalam file templat Anda untuk mendapatkan informasi khusus pengguna saat runtime atau berinteraksi dengan mesin templat. Anda juga dapat menentukan variabel templat Anda sendiri.

Pembantu templat berikut tersedia untuk proyek templat bundel Databricks. Untuk informasi tentang menggunakan templat dan variabel Go, lihat templat Go.

Pembantu Deskripsi
{{url}} Alias untuk https://pkg.go.dev/net/url#Parse. Ini memungkinkan penggunaan semua metode url.URL.
{{regexp}} Alias untuk https://pkg.go.dev/regexp#Compile. Ini memungkinkan penggunaan semua metode regexp.Regexp.
{{random_int}} Mengembalikan angka pseudo-random non-negatif dalam interval setengah terbuka (0,n) sebagai int.
{{uuid}} Mengembalikan, sebagai string, UUID yang merupakan IDentifier Unik Universal 128 bit (16 byte) seperti yang didefinisikan dalam RFC 4122.ID ini stabil selama durasi eksekusi templat, dan dapat digunakan untuk mengisi bidang bundle.uuid di databricks.yml oleh penulis templat.
{{bundle_uuid}} ID unik untuk bundel. Beberapa pemanggilan fungsi ini akan mengembalikan UUID yang sama.
{{pair}} Pasangan nilai kunci. Ini digunakan dengan pembantu map untuk menghasilkan peta untuk digunakan di dalam templat.
{{map}} Mengonversi daftar pasangan menjadi objek peta. Ini berguna untuk meneruskan beberapa objek ke templat yang ditentukan dalam direktori pustaka. Karena sintaks templat teks Go untuk memanggil templat hanya memungkinkan menentukan satu argumen, fungsi ini dapat digunakan untuk mengatasi batasan tersebut.
Misalnya di baris berikut, {{template "my_template" (map (pair "foo" $arg1) (pair "bar" $arg2))}}, $arg1 dan $arg2 dapat disebut dari dalam my_template sebagai .foo dan .bar.
{{smallest_node_type}} Mengembalikan jenis node terkecil.
{{path_separator}} Karakter pemisah jalur untuk sistem operasi. Ini / untuk sistem berbasis Unix dan \ untuk Windows.
{{workspace_host}} URL host ruang kerja tempat pengguna saat ini diautentikasi.
{{user_name}} Nama lengkap pengguna yang menginisialisasi templat.
{{short_name}} Nama pendek pengguna yang menginisialisasi templat.
{{default_catalog}} Mengembalikan katalog ruang kerja default. Jika tidak ada default, atau jika Katalog Unity tidak diaktifkan, ini mengembalikan string kosong.
{{is_service_principal}} Apakah pengguna saat ini adalah perwakilan layanan atau tidak.
{{ skip <glob-pattern-relative-to-current-directory> }} Menyebabkan mesin templat mengabaikan pembuatan semua file dan direktori yang sesuai dengan pola glob input. Misalnya, lihat templat mlops-stacks .

Pembantu templat kustom

Untuk menentukan pembantu templat Anda sendiri, buat file templat di folder library proyek templat dan gunakan sintaks templat Go untuk menentukan pembantu. Misalnya, konten file library/variables.tmpl berikut menentukan variabel cli_version dan model_name. Ketika templat ini digunakan untuk menginisialisasi bundel, nilai variabel model_name dibangun menggunakan bidang input_project_name yang ditentukan dalam file skema templat. Nilai bidang ini adalah input pengguna setelah arahan.

{{ define `cli_version` -}}
    v0.240.0
{{- end }}

{{ define `model_name` -}}
    {{ .input_project_name }}-model
{{- end }}

Untuk melihat contoh lengkap, lihat file variabel templat mlops-stacks .

Menguji templat bundel

Terakhir, pastikan untuk menguji templat Anda. Misalnya, gunakan Databricks CLI untuk menginisialisasi bundel baru menggunakan templat yang ditentukan di bagian sebelumnya:

databricks bundle init basic-bundle-template

Untuk perintah, What is your bundle project name?, ketik my_test_bundle.

Setelah bundel pengujian dibuat, pesan keberhasilan dari file skema dikeluarkan. Jika Anda memeriksa konten my_test_bundle folder, Anda akan melihat hal berikut:

my_test_bundle
   ├── databricks.yml
   ├── resources
   │  └── my_test_bundle_job.yml
   └── src
      └── simple_notebook.ipynb

Dan file serta tugas databricks.yml kini telah disesuaikan.

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

bundle:
  name: my_test_bundle

include:
  - resources/*.yml

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
# my_test_bundle_job.yml
# 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

Berbagi templat

Jika Anda ingin berbagi templat bundel ini dengan orang lain, Anda dapat menyimpannya dalam kontrol versi dengan penyedia apa pun yang didukung Git dan yang dapat diakses pengguna Anda. Untuk menjalankan bundle init perintah dengan URL Git, pastikan file databricks_template_schema.json berada di lokasi akar relatif terhadap URL Git tersebut.

Tips

Anda dapat menempatkan file databricks_template_schema.json di folder yang berbeda, relatif terhadap root bundel. Anda kemudian dapat menggunakan opsi perintah bundle init--template-dir untuk mereferensikan folder tersebut, yang berisi file databricks_template_schema.json.

Langkah berikutnya