Bagikan melalui


Templat proyek Bundel Aset Databricks

Artikel ini menguraikan sintaks untuk templat Bundel Aset Databricks. Bundel memungkinkan manajemen terprogram alur kerja Azure Databricks. 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 lingkungan pengembangan.

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 mendukung lingkungan kontainer kustom.

Templat bundel menentukan struktur direktori bundel yang akan dibuat, dan menyertakan databricks.yml.tmpl templat file konfigurasi serta file yang databricks_template_schema.json berisi variabel permintaan pengguna.

Menggunakan templat bundel default

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

databricks bundle init default-python

Jika Anda tidak menentukan templat default, bundle init perintah menyajikan sekumpulan templat yang tersedia yang dapat Anda pilih.

Azure Databricks menyediakan templat bundel default berikut:

Templat Deskripsi
default-python Templat untuk menggunakan Python dengan Databricks. Templat ini membuat bundel dengan pekerjaan dan alur Delta Live Tables. 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 dan bundel lokal 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 Templat tumpukan penuh tingkat lanjut untuk memulai proyek MLOps Stacks baru. Lihat mlops-stacks dan Databricks Asset Bundles untuk MLOps Stacks.

Menggunakan templat bundel kustom

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

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

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

Membuat templat bundel kustom

Templat bundel menggunakan sintaks templat paket Go. Lihat dokumentasi templat paket Go.

Minimal, proyek templat bundel harus memiliki:

  • File databricks_template_schema.json di akar proyek yang menentukan satu variabel permintaan pengguna untuk nama proyek bundel.
  • File databricks.yml.tmpl yang template terletak di folder yang menentukan konfigurasi untuk bundel apa pun yang dibuat dengan templat. Jika file Anda databricks.yml.tmpl mereferensikan templat konfigurasi tambahan *.yml.tmpl , tentukan lokasinya dalam include pemetaan.

Anda dapat secara opsional menambahkan sub-folder dan file ke template folder yang ingin Anda cerminkan dalam bundel yang dibuat oleh templat.

Menentukan variabel permintaan pengguna

Langkah pertama dalam membangun templat bundel dasar adalah membuat folder proyek templat dan file bernama databricks_template_schema.json di akar proyek. File ini berisi variabel yang disediakan pengguna nilai input ketika mereka menggunakan templat untuk membuat bundel menggunakan bundle init. Format file ini mengikuti Spesifikasi Skema JSON.

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

Tambahkan yang berikut ini ke databricks_template_schema.json file, lalu simpan file:

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

Dalam berkas ini:

  • project_name adalah satu-satunya nama variabel input.
  • default adalah nilai default opsional jika nilai tidak disediakan oleh pengguna sebagai --config-file bagian bundle init dari perintah, atau ditimpa oleh pengguna pada prompt perintah.
  • description adalah perintah pengguna yang terkait dengan variabel input, jika nilai tidak disediakan oleh pengguna sebagai --config-file bagian bundle init dari perintah.
  • order adalah urutan opsional di mana setiap permintaan pengguna muncul jika nilai tidak disediakan oleh pengguna sebagai --config-file bagian bundle init dari perintah. Jika order tidak disediakan, maka permintaan pengguna ditampilkan dalam urutan di mana mereka tercantum dalam skema.
  • success_message adalah pesan opsional yang ditampilkan setelah pembuatan proyek berhasil.

Membangun struktur folder

Selanjutnya, buat folder yang diperlukan template dan buat struktur folder di dalamnya. Struktur ini akan dicerminkan oleh bundel yang dibuat dengan templat ini. Selain itu, letakkan file apa pun yang ingin Anda sertakan ke dalam folder tersebut. Templat bundel dasar ini menyimpan file dalam src folder dan menyertakan satu buku catatan sederhana.

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

Tambahkan yang berikut ini ke simple_notebook.ipynb file:

print("Hello World!")

Mengisi file templat konfigurasi

Sekarang buat file yang diperlukan databricks.yml.tmpl di template folder:

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

Isi file ini dengan YAML templat konfigurasi dasar. Templat konfigurasi ini menetapkan nama bundel, satu pekerjaan menggunakan file notebook yang ditentukan, dan dua lingkungan target untuk bundel yang dibuat menggunakan templat ini. Ini juga memanfaatkan substitusi bundel, yang sangat direkomendasikan. Lihat substitusi bundel.

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

Menguji templat bundel

Terakhir, uji templat Anda. Buat folder proyek bundel baru, lalu gunakan Databricks CLI untuk menginisialisasi bundel baru menggunakan templat:

mkdir my-test-bundle
cd my-test-bundle
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 adalah output. Jika Anda memeriksa konten my-test-bundle folder, Anda akan melihat hal berikut:

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

Dan file databricks.yml sekarang disesuaikan:

# 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

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.

Tip

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

Langkah berikutnya