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.
Organisasi sering mempertahankan banyak bundel, dan dalam skenario CI/CD yang lebih canggih ini, bundel ini berbagi konfigurasi dan file umum. Misalnya, bundel dapat berbagi pustaka yang disimpan di lokasi bersama, atau pengaturan dan variabel komputasi dapat ditentukan dalam file konfigurasi di lokasi bersama.
Artikel ini menyediakan informasi tentang cara mengonfigurasi dua bundel untuk menggunakan konfigurasi dan file di folder bersama. Contoh bundel bersama lengkap ada di repositori GitHub bundel-contoh.
Untuk praktik terbaik tambahan terkait CI/CD dan pengembangan, lihat Alur kerja CI/CD di Databricks dan Praktik terbaik pengembang di Databricks.
Struktur repositori
Praktik umum dan rekomendasi Databricks adalah menyimpan sumber untuk banyak bundel dalam satu repositori dengan folder bersama.
Contoh struktur repositori dengan lebih dari satu bundel mungkin:
databricks-bundle-repo/
├── shared
│ ├── variables.yml # has variable definitions like cluster_id
│ └── shared_library.py # has shared code used in multiple bundles
├── job_bundle
│ ├── databricks.yml # uses ${var.cluster_id} defined in variables.yml
│ ├── resources/
│ │ └── job_bundle.job.yml
│ ├── src/
│ │ ├── notebook.ipynb
│ │ └── my_python.py # uses ../shared/shared_library.py
│ └── README.md
├── pipeline_bundle
│ ├── databricks.yml
│ ├── resources/
│ │ ├── pipeline_bundle.job.yml # uses ${var.cluster_id} defined in variables.yml
│ │ └── pipeline_bundle.pipeline.yml
│ ├── src/
│ │ └── my_pipeline.ipynb
│ └── README.md
Konfigurasi untuk berbagi file
Untuk menyertakan file kode di luar bundel, tentukan file tersebut paths di kunci pemetaan sinkronisasi.
Misalnya, diberikan shared folder di repositori (pada tingkat yang sama dengan folder bundel) yang berisi:
shared_library.pyfile kode dengan konten:def multiply(a: int, b: int) -> int: return a * ba
variables.ymldengan isi:variables: cluster_id: default: 1234-567890-abcde123
Kemudian konfigurasi bundel yang menggunakan file kode bersama dan variabel bundel yang ditentukan dalam konfigurasi bersama adalah:
# databricks.yml
bundle:
name: job_bundle
sync:
paths:
- ../shared
- ./src
include:
- resources/*.yml
- ../shared/*.yml
targets:
dev:
mode: development
default: true
workspace:
host: https://my-workspace.cloud.databricks.com
prod:
mode: production
workspace:
host: https://my-workspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
permissions:
- user_name: someone@example.com
level: CAN_MANAGE
# job_bundle.yml
resources:
jobs:
my_python_job:
name: my_python_job
tasks:
- task_key: python_task
spark_python_task:
python_file: src/my_python.py # uses ../shared/shared_library.py
my_notebook_job:
name: my_notebook_job
tasks:
- task_key: notebook_task
existing_cluster_id: ${var.cluster_id} # defined in ../shared/variables.yml
notebook_task:
notebook_path: src/notebook.ipynb
# my_python.py
import os
import sys
# Traverse to the sync root path.
# Note: this requires :re[DBR] >= 14 or serverless.
shared_path = os.getcwd() + "/../../shared"
# Add the shared directory to the Python path.
sys.path.append(shared_path)
# Import a function from shared_library.py
from shared_library import multiply
# Use the function.
result = multiply(2, 3)
print(result)
Validasi sebuah bundel
Penting untuk selalu memvalidasi konfigurasi bundel Anda, dan terutama jika bundel Anda berbagi file dan konfigurasi.
databricks bundle validate Perintah memastikan bahwa variabel, file, dan jalur yang ditentukan dalam bundel Anda ada dan diwariskan dan dikonfigurasi dengan benar, serta menghasilkan informasi tentang masalah sehingga Anda dapat memperbaikinya sebelum menyebarkannya. Lihat databricks bundle validate.
Jalankan perintah berikut untuk setiap bundel sebelum menyebarkan:
databricks bundle validate
Izin untuk bundel bersama
Dalam organisasi, bundel sering dikembangkan, disebarkan, dan dijalankan oleh individu yang berbeda dengan berbagai tanggung jawab dan tingkat izin. Semua pengguna mungkin harus dapat melihat bundel, beberapa harus dapat menyebarkan perubahan bundel dan menjalankan sumber daya di ruang kerja pengembangan target, sejumlah kecil perlu dapat menyebarkan perubahan bundel dan menjalankan sumber daya di lingkungan produksi, dan perwakilan layanan yang digunakan dalam alur kerja otomatis harus dapat menjalankan sumber daya dalam bundel. Untuk memastikan bundel bersama Anda dapat dikelola secara efektif oleh semua pengguna di organisasi Anda, tetapkan izin tingkat atas serta izin target produksi. Untuk informasi tentang izin tingkat atas, yang menerapkan izin ke semua sumber daya dalam bundel, lihat izin.
Petunjuk / Saran
Bundel Otomasi Deklaratif di ruang kerja memungkinkan kolaborasi yang mudah pada paket. Lihat Berkolaborasi pada bundel di ruang kerja.
Sebagai contoh, databricks.yml untuk sebuah bundel yang dibagikan mungkin:
# databricks.yml
bundle:
name: shared_bundle
include:
- resources/*.yml
permissions:
- level: CAN_VIEW
group_name: all_users
- level: CAN_MANAGE
group_name: data_engineering_users
- level: CAN_RUN
service_principal_name: 123456-abcdef
targets:
dev:
mode: development
default: true
workspace:
host: https://my-workspace.cloud.databricks.com
prod:
mode: production
workspace:
host: https://my-workspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
permissions:
- user_name: someone@example.com
level: CAN_MANAGE