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 foldertemplate
yang menentukan konfigurasi bagi setiap bundel yang dibuat menggunakan templat. Jika file Andadatabricks.yml.tmpl
merujuk pada templat konfigurasi tambahan*.yml.tmpl
, tentukan lokasinya dalam pemetaaninclude
. 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.json
file 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
- Telusuri templat tambahan yang dibuat dan dikelola oleh Databricks. Lihat repositori contoh bundel di GitHub.
- Untuk menggunakan Stack MLOps dengan templat Bundel Aset Databricks, lihat Bundel Aset Databricks untuk Stack MLOps.
- Pelajari selengkapnya tentang templat paket Go. Lihat dokumentasi templat paket Go.