Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kuruluşlar genellikle birçok paket tutar ve bu daha gelişmiş CI/CD senaryolarında bu paketler ortak yapılandırmayı ve dosyaları paylaşır. Örneğin, paketler paylaşılan bir konumda depolanan kitaplıkları paylaşabilir veya paylaşılan konumdaki bir yapılandırma dosyasında işlem ayarları ve değişkenleri tanımlanabilir.
Bu makalede, iki paketin paylaşılan bir klasördeki yapılandırmayı ve dosyaları kullanması için nasıl yapılandırılacağı hakkında bilgi sağlanır. Paylaşılan paket örneklerinin tamamı paket örnekleri GitHub deposunda yer alır.
Ek CI/CD ve geliştirici en iyi uygulamaları için bkz. Databricks'te CI/CD iş akışları ve Databricks'te geliştirici en iyi yöntemleri.
Depo yapısı
Yaygın bir uygulama ve Databricks'in önerisi, paylaşılan klasöre sahip bir depoda birçok paket için kaynak depolamaktır.
Birden fazla paket içeren örnek bir depo yapısı şöyle olabilir:
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
Dosya paylaşımı yapılandırması
Kod dosyalarını bir paketin dışına eklemek için bunları paths anahtarında belirtin.
Örneğin, depodaki ( shared paket klasörleriyle aynı düzeyde) aşağıdakiler içeren bir klasör verilmiştir:
içeriğini içeren bir
shared_library.pykod dosyası:def multiply(a: int, b: int) -> int: return a * biçindekiler ile a
variables.yml:variables: cluster_id: default: 1234-567890-abcde123
Ardından paylaşılan kod dosyasını ve paylaşılan yapılandırmada tanımlanan paket değişkenini kullanan bir paket yapılandırması şöyle olacaktır:
# 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)
Paket doğrulama
Paket yapılandırmanızı her zaman doğrulamak ve özellikle de paketleriniz dosyaları ve yapılandırmayı paylaşıyorsa önemlidir. komutu databricks bundle validate , paketinizde belirtilen değişkenlerin, dosyaların ve yolların mevcut olmasını ve düzgün bir şekilde devralınmasını ve yapılandırılmasını sağlar ve dağıtmadan önce bunları düzeltebilmeniz için sorunlar hakkında bilgi çıkışı sağlar. Bkz. databricks paketi doğrulama.
Dağıtmadan önce her paket için aşağıdaki komutu çalıştırın:
databricks bundle validate
Paylaşılan paketler için izinler
Bir kuruluşta paketler genellikle farklı sorumluluklara ve izin düzeylerine sahip farklı kişiler tarafından geliştirilir, dağıtılır ve çalıştırılır. Tüm kullanıcıların paketleri görüntüleyebilmesi, bazılarının paket değişikliklerini dağıtabilmesi ve kaynakları hedef geliştirme çalışma alanında çalıştırabilmesi, belirli birkaç kullanıcının paket değişikliklerini dağıtabilmesi ve kaynakları üretimde çalıştırabilmesi ve hizmet sorumlusu kullanan otomatik iş akışlarının kaynakları pakette çalıştırabilmesi gerekebilir. Paylaşılan paketlerinizin kuruluşunuzdaki tüm kullanıcılar tarafından etkili bir şekilde yönetilebilmesini sağlamak için, üretim hedefi izinlerinin yanı sıra üst düzey izinleri de ayarlayın. Bir paketteki tüm kaynaklara izinler uygulayan en üst düzey izinler hakkında bilgi için bkz. izinler.
Tavsiye
Çalışma alanında bildirim temelli Otomasyon Paketleri, paketlerde kolay işbirliği sağlar. Bkz. Çalışma alanında paketler üzerinde işbirliği yapma.
Örneğin, databricks.yml paylaşılan paket için şu olabilir:
# 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