Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menyediakan contoh konfigurasi untuk Bundel Automasi Deklaratif (sebelumnya dikenal sebagai Fitur Bundel Aset Databricks) dan kasus penggunaan bundel umum.
Contoh bundel lengkap, yang diuraikan dalam tabel berikut, tersedia di repositori GitHub contoh bundel:
| Nama bundel | Deskripsi |
|---|---|
| app_with_database | Bundel dengan aplikasi Databricks yang didukung oleh database OLTP Postgres |
| dashboard_nyc_taxi | Bundel dengan dasbor AI/BI dan pekerjaan otomatis yang mengambil tangkapan layar dasbor dan mengirimkannya melalui email ke pelanggan terdaftar |
| database_with_catalog | Bundel yang menentukan instans database OLTP dan katalog database |
| databricks_app | Bundel yang mendefinisikan Aplikasi Databricks |
| kluster_pengembangan | Bundel yang mendefinisikan dan menggunakan kluster pengembangan (serbaguna) |
| job_read_secret | Bundel yang mendefinisikan cakupan rahasia dan sebuah pekerjaan dengan tugas untuk membacanya |
| job_with_multiple_wheels | Bundel yang menentukan dan menggunakan pekerjaan dengan beberapa dependensi roda |
| job_with_run_job_tasks | Bundel dengan beberapa pekerjaan dengan tugas menjalankan pekerjaan |
| job_with_sql_notebook | Paket dengan tugas yang menggunakan notepad SQL |
| pipeline_with_schema | Bundel yang menentukan skema Katalog Unity dan alur yang menggunakannya |
| private_wheel_packages | Bundel yang menggunakan paket roda privat dari pekerjaan |
| python_wheel_poetry | Bundel yang membangun whl dengan Puisi |
| serverless_job | Bundel yang menggunakan komputasi tanpa server untuk menjalankan pekerjaan |
| bagikan_berkas_di_antarapaket | Bundel yang menyertakan file yang terletak di luar direktori akar bundel. |
| spark_jar_task | Paket yang menentukan dan menggunakan proses Spark JAR |
| write_from_job_to_volume (tulis_dari_pekerjaan_ke_volume) | Paket yang menulis file ke volume Katalog Unity |
Skenario bundel
Bagian ini berisi contoh konfigurasi yang menunjukkan penggunaan pemetaan bundel tingkat atas. Lihat Referensi konfigurasi.
Bundel yang mengunggah file JAR ke Katalog Unity
Anda dapat menentukan volume Katalog Unity sebagai jalur artefak sehingga semua artefak, seperti file JAR dan file roda, diunggah ke volume Katalog Unity. Contoh bundel berikut membangun dan mengunggah file JAR ke Katalog Unity. Untuk informasi tentang artifact_path pemetaan, lihat workspace.artifact_path. Untuk informasi tentang artifacts, lihat artefak .
bundle:
name: jar-bundle
workspace:
host: https://myworkspace.cloud.databricks.com
artifact_path: /Volumes/main/default/my_volume
artifacts:
my_java_code:
path: ./sample-java
build: 'javac PrintArgs.java && jar cvfm PrintArgs.jar META-INF/MANIFEST.MF PrintArgs.class'
files:
- source: ./sample-java/PrintArgs.jar
resources:
jobs:
jar_job:
name: 'Spark Jar Job'
tasks:
- task_key: SparkJarTask
new_cluster:
num_workers: 1
spark_version: '14.3.x-scala2.12'
node_type_id: 'i3.xlarge'
spark_jar_task:
main_class_name: PrintArgs
libraries:
- jar: ./sample-java/PrintArgs.jar
Konfigurasi dasbor
Bagian ini berisi contoh konfigurasi dasbor. Untuk detail konfigurasi dasbor, lihat dasbor.
Katalog dasbor dan parameterisasi skema
Anda dapat menentukan satu katalog dan skema untuk himpunan data dalam dasbor saat menyebarkannya dengan Bundel Otomatisasi Deklaratif menggunakan bidang dataset_catalog dan dataset_schema dari sumber daya dasbor.
Nota
Untuk membuat parameter referensi tabel tertentu di dalam SQL, Anda dapat menggunakan fungsi .current_catalog()
Contoh konfigurasi bundel berikut menentukan variabel untuk mengatur nilai katalog dan skema untuk target dev dan prod. Ini mengasumsikan bahwa ada file nyc_taxi_trip_analysis.lvdash.json pada folder paket src.
bundle:
name: dashboard-bundle
variables:
warehouse_id:
description: Warehouse
default: baf79a9e4ze90f02
catalog_name:
description: 'Catalog name'
default: test_catalog
schema_name:
description: 'Schema name'
default: ${workspace.current_user.short_name}
resources:
dashboards:
nyc_taxi_trip_analysis:
display_name: 'NYC Taxi Trip Analysis'
file_path: src/nyc_taxi_trip_analysis.lvdash.json
warehouse_id: ${var.warehouse_id}
dataset_catalog: ${var.catalog}
dataset_schema: ${var.schema}
targets:
dev:
mode: development
default: true
workspace:
host: https://myworkspace.cloud.databricks.com
variables:
catalog: dev_catalog
schema: ${workspace.current_user.short_name}
prod:
mode: production
workspace:
host: https://myworkspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
variables:
catalog_name: prod_catalog
schema_name: prod_schema
permissions:
- user_name: someone@example.com
level: CAN_MANAGE
Konfigurasi pekerjaan
Bagian ini berisi contoh konfigurasi pekerjaan. Untuk detail konfigurasi pekerjaan, lihat pekerjaan.
Pekerjaan yang menggunakan komputasi tanpa server
Bundel Otomatisasi Deklaratif mendukung pekerjaan yang berjalan pada komputasi tanpa server. Lihat Menjalankan Pekerjaan Lakeflow Anda dengan komputasi tanpa server untuk alur kerja. Untuk mengonfigurasi ini, Anda dapat menghilangkan pengaturan clusters untuk pekerjaan dengan tugas buku catatan, atau Anda bisa menentukan lingkungan seperti yang diperlihatkan dalam contoh di bawah ini. Untuk tugas skrip Python, roda Python, dan dbt, environment_key diperlukan untuk komputasi tanpa server. Lihat environment_key.
# A serverless job (no cluster definition)
resources:
jobs:
serverless_job_no_cluster:
name: serverless_job_no_cluster
email_notifications:
on_failure:
- someone@example.com
tasks:
- task_key: notebook_task
notebook_task:
notebook_path: ../src/notebook.ipynb
# A serverless job (environment spec)
resources:
jobs:
serverless_job_environment:
name: serverless_job_environment
tasks:
- task_key: task
spark_python_task:
python_file: ../src/main.py
# The key that references an environment spec in a job.
# https://docs.databricks.com/api/workspace/jobs/create#tasks-environment_key
environment_key: default
# A list of task execution environment specifications that can be referenced by tasks of this job.
environments:
- environment_key: default
# Full documentation of this spec can be found at:
# https://docs.databricks.com/api/workspace/jobs/create#environments-spec
spec:
environment_version: '2'
dependencies:
- my-library
Pekerjaan dengan beberapa file roda
Contoh konfigurasi berikut menentukan kumpulan yang mencakup tugas dengan beberapa file *.whl.
# job.yml
resources:
jobs:
example_job:
name: 'Example with multiple wheels'
tasks:
- task_key: task
spark_python_task:
python_file: ../src/call_wheel.py
libraries:
- whl: ../my_custom_wheel1/dist/*.whl
- whl: ../my_custom_wheel2/dist/*.whl
new_cluster:
node_type_id: i3.xlarge
num_workers: 0
spark_version: 14.3.x-scala2.12
spark_conf:
'spark.databricks.cluster.profile': 'singleNode'
'spark.master': 'local[*, 4]'
custom_tags:
'ResourceClass': 'SingleNode'
# databricks.yml
bundle:
name: job_with_multiple_wheels
include:
- ./resources/job.yml
workspace:
host: https://myworkspace.cloud.databricks.com
artifacts:
my_custom_wheel1:
type: whl
build: poetry build
path: ./my_custom_wheel1
my_custom_wheel2:
type: whl
build: poetry build
path: ./my_custom_wheel2
targets:
dev:
default: true
mode: development
Pekerjaan dengan parameter
Contoh konfigurasi berikut mendefinisikan pekerjaan dengan parameter. Untuk informasi selengkapnya tentang membuat parameter pekerjaan, lihat Membuat parameter pekerjaan.
resources:
jobs:
job_with_parameters:
name: job_with_parameters
tasks:
- task_key: task_a
spark_python_task:
python_file: ../src/file.py
parameters:
- '--param1={{ job.parameters.param1 }}'
- '--param2={{ job.parameters.param2 }}'
new_cluster:
node_type_id: i3.xlarge
num_workers: 1
spark_version: 14.3.x-scala2.12
parameters:
- name: param1
default: value1
- name: param2
default: value1
Parameter ini dapat ditetapkan selama runtime dengan meneruskan parameter tugas ke bundle run, misalnya:
databricks bundle run -- --param1=value2 --param2=value2
Pekerjaan yang menggunakan file requirements.txt
Contoh konfigurasi berikut menentukan pekerjaan yang menggunakan file requirements.txt.
resources:
jobs:
job_with_requirements_txt:
name: 'Example job that uses a requirements.txt file'
tasks:
- task_key: task
job_cluster_key: default
spark_python_task:
python_file: ../src/main.py
libraries:
- requirements: /Workspace/${workspace.file_path}/requirements.txt
Pekerjaan sesuai jadwal
Contoh berikut menunjukkan konfigurasi untuk pekerjaan yang berjalan sesuai jadwal. Untuk informasi tentang jadwal dan pemicu pekerjaan, lihat Mengotomatiskan pekerjaan dengan jadwal dan pemicu.
Konfigurasi ini menentukan pekerjaan yang berjalan setiap hari pada waktu yang ditentukan:
resources:
jobs:
my-notebook-job:
name: my-notebook-job
tasks:
- task_key: my-notebook-task
notebook_task:
notebook_path: ./my-notebook.ipynb
schedule:
quartz_cron_expression: '0 0 8 * * ?' # daily at 8am
timezone_id: UTC
pause_status: UNPAUSED
Dalam konfigurasi ini, pekerjaan berjalan satu minggu setelah pekerjaan terakhir dijalankan:
resources:
jobs:
my-notebook-job:
name: my-notebook-job
tasks:
- task_key: my-notebook-task
notebook_task:
notebook_path: ./my-notebook.ipynb
trigger:
pause_status: UNPAUSED
periodic:
interval: 1
unit: WEEKS
Konfigurasi pipeline
Bagian ini berisi contoh konfigurasi alur. Untuk informasi konfigurasi alur, lihat alur.
Alur yang menggunakan komputasi tanpa server
Bundel Otomatisasi Deklaratif mendukung alur yang berjalan pada komputasi tanpa server. Untuk mengonfigurasi ini, atur alur serverless menjadi true. Contoh konfigurasi berikut mendefinisikan alur yang berjalan pada komputasi tanpa server dengan dependensi yang diinstal, dan pekerjaan yang memicu refresh alur setiap jam.
# A pipeline that runs on serverless compute
resources:
pipelines:
my_pipeline:
name: my_pipeline
target: ${bundle.environment}
serverless: true
environment:
dependencies:
- 'dist/*.whl'
catalog: users
libraries:
- notebook:
path: ../src/my_pipeline.ipynb
configuration:
bundle.sourcePath: /Workspace/${workspace.file_path}/src
# This defines a job to refresh a pipeline that is triggered every hour
resources:
jobs:
my_job:
name: my_job
# Run this job once an hour.
trigger:
periodic:
interval: 1
unit: HOURS
email_notifications:
on_failure:
- someone@example.com
tasks:
- task_key: refresh_pipeline
pipeline_task:
pipeline_id: ${resources.pipelines.my_pipeline.id}