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.
Bildirim temelli Otomasyon Paketleri (eski adıyla Databricks Varlık Paketleri), değişimleri ve özel değişkenleri destekler ve bu da paket yapılandırma dosyalarınızı daha modüler ve yeniden kullanılabilir hale getirir. Hem değiştirmeler hem de özel değişkenler, değerlerin dinamik olarak alınmasını sağlar, böylece ayarlar paket dağıtıldığında ve çalıştırıldığında belirlenebilir.
İpucu
Ayrıca, bir iş çalıştırması hakkındaki bağlamı iş görevlerine geçirmek için iş parametresi değerleri için dinamik değer başvuruları da kullanabilirsiniz. Bakınız Dinamik değer başvurusu nedir? ve İşleri parametreleştirme.
Değişimler
Değişimleri, paket dağıtımının bağlamı temelinde değişebilecek ayarların değerlerini almak ve çalıştırmak için kullanabilirsiniz. Örneğin, paket yapılandırma dosyasında çalışma alanını name oluşturmak için pakettarget, paket userNameve çalışma alanı root_path alanlarının değerlerine başvurmak için alt bileşenler kullanılabilir:
bundle:
name: hello-bundle
workspace:
root_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}
targets:
dev:
default: true
Eğer someone@example.com bu paketi dağıtsaydı, kök yoluna /Workspace/Users/someone@example.com/.bundle/hello-bundle/my-envs/dev dağıtılacaktı.
Adlandırılmış kaynaklar için yedekler de oluşturabilirsiniz. Örneğin, aşağıdaki işlem hattı tanımı için işlem hattının hedefinin değeri için kullanabilirsiniz ${resources.pipelines.my_pipeline.target} :
resources:
pipelines:
my_pipeline:
name: my_pipeline
schema: pipeline_bundle_${bundle.target}
libraries:
- notebook:
path: ../src/my_pipeline.ipynb
configuration:
bundle.sourcePath: ${workspace.file_path}/src
Geçerli değiştirmeleri belirlemek için paket yapılandırma başvurusunu, kaynak yapılandırma başvurusunu veya REST API başvurusunda belgelenen ilgili nesnelerin şema hiyerarşisini veya komutun çıkışını bundle schema kullanın.
İpucu
Kaynaklar için kullanılabilen değiştirmelerin tam listesi için bkz. Databricks CLI GitHub deposu out.fields.txt
Yaygın olarak kullanılan bazı değiştirmeler şunlardır:
${bundle.name}${bundle.target} # Use this substitution instead of ${bundle.environment}${workspace.host}${workspace.current_user.domain_friendly_name}${workspace.current_user.short_name}${workspace.current_user.userName}${workspace.file_path}${workspace.root_path}${resources.jobs.<job-name>.id}${resources.models.<model-name>.name}${resources.pipelines.<pipeline-name>.name}
Özel değişkenler
Birçok senaryo için gereken değerlerin dinamik olarak alınmasını sağlamak için paketinizde hem basit hem de karmaşık özel değişkenler tanımlayabilirsiniz. Özel değişkenler, paket yapılandırma dosyalarınızda variables eşlemesinde veya variable-overrides.json dosyasında bildirilir.
variables eşlemesi hakkında bilgi için bkz. değişkenleri.
Aşağıdaki örnek yapılandırma, my_cluster_id ve my_notebook_path değişkenlerini tanımlar.
variables:
my_cluster_id:
description: The ID of an existing cluster.
default: 1234-567890-abcde123
my_notebook_path:
description: The path to an existing notebook.
default: ./hello.py
Bu bildirimin bir parçası olarak bir değişken için değer default sağlamazsanız paket komutlarını yürütürken, bir ortam değişkeni aracılığıyla, paket yapılandırma dosyalarınızın içinde başka bir yerde veya .databricks/bundle/<target>/variable-overrides.json paket projesindeki dosyada bunu ayarlamanız gerekir. Bkz. Değişkenin değerini ayarlama.
Bir değişkene referans verin
Paket yapılandırmanızda özel bir değişkene başvurmak için değişken değiştirmesini${var.<variable_name>}kullanın. Örneğin, aşağıdaki yapılandırma my_cluster_id ve my_notebook_path değişkenlerine başvurur.
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: ${var.my_cluster_id}
notebook_task:
notebook_path: ${var.my_notebook_path}
Değişkenin değerini ayarlama
Bir değişken için değer default ayarlamadıysanız veya bir değişkenin default değerini geçici olarak geçersiz kılmak istiyorsanız, aşağıdaki yaklaşımlardan birini kullanarak değişkenin yeni geçici değerini sağlayın.
Not
Paket değişkenleri dağıtım zamanı değişkenleridir. Paketi dağıttığınızda bunlar yorumlanır. Örneğin, bir işi çalıştırdığınızda, daha önce dağıtılan bir işi ve bu dağıtım için yapılandırılmış değişkenleri çalıştırır, bu nedenle işin çalıştırılması için değişkenler için farklı değerler geçirmek geçerli olmaz. Bunun yerine, iş parametrelerini kullanarak değerleri bir iş çalıştırmasına iletin. Bkz İş parametrelerini geçirme.
Değişkenin değerini
bundle,validateveyadeploygibi bir komutun parçası olarakrunile sağlayın. Bunu yapmak için,--var="<key>=<value>"seçeneğini,<key>değişkenin adı ve<value>değişkenin değeri olarak kullanın. Örneğin,bundle validatekomutunun bir parçası olarak,1234-567890-abcde123adlı değişkenemy_cluster_iddeğerini ve./hello.pyadlı değişkenemy_notebook_pathdeğerini sağlamak için komutunu çalıştırın.databricks bundle validate --var="my_cluster_id=1234-567890-abcde123,my_notebook_path=./hello.py" # Or: databricks bundle validate --var="my_cluster_id=1234-567890-abcde123" --var="my_notebook_path=./hello.py"Ortam değişkeni ayarlayarak değişkenin değerini sağlayın. Ortam değişkeninin adı ile
BUNDLE_VAR_başlamalıdır. Ortam değişkenlerini ayarlamak için işletim sisteminizin belgelerine bakın. Örneğin,1234-567890-abcde123değerinimy_cluster_idadlı değişkene ve./hello.pydeğerinimy_notebook_pathadlı değişkene sağlamak için,bundlegibi birvalidate,deployveyarunkomutunu çağırmadan önce aşağıdaki komutu çalıştırın:Linux ve macOS için:
export BUNDLE_VAR_my_cluster_id=1234-567890-abcde123 && export BUNDLE_VAR_my_notebook_path=./hello.pyWindows için:
"set BUNDLE_VAR_my_cluster_id=1234-567890-abcde123" && "set BUNDLE_VAR_my_notebook_path=./hello.py"Veya değişkenin değerini,
bundlekomutunun bir parçası olarakvalidate,deployveyarungibi sağlayın; örneğin, Linux ve macOS için:BUNDLE_VAR_my_cluster_id=1234-567890-abcde123 BUNDLE_VAR_my_notebook_path=./hello.py databricks bundle validateVeya Windows için:
"set BUNDLE_VAR_my_cluster_id=1234-567890-abcde123" && "set BUNDLE_VAR_my_notebook_path=./hello.py" && "databricks bundle validate"Paket yapılandırma dosyalarınızda,
variableseşlemesi içerisindekitargetseşlemesini kullanarak değişkenin değerini aşağıdaki biçimde sağlayın:variables: <variable-name>: <value>Örneğin, iki ayrı hedef için
my_cluster_idvemy_notebook_pathadlı değişkenlerin değerlerini ayarlamak için:targets: dev: variables: my_cluster_id: 1234-567890-abcde123 my_notebook_path: ./hello.py prod: variables: my_cluster_id: 2345-678901-bcdef234 my_notebook_path: ./hello.pyAşağıdaki biçimi kullanarak değişkenin
.databricks/bundle/<target>/variable-overrides.jsondeğerini dosya içinde sağlayın:{ "<variable-name>": "<variable-value>" }Örneğin, geliştirme hedefi için
my_cluster_idvemy_notebook_pathadlı değişkenlere değer sağlamak için bir dosya.databricks/bundle/dev/variable-overrides.jsonoluşturun ve içeriğini şu şekilde ayarlayın:{ "my_cluster_id": "1234-567890-abcde123", "my_notebook_path": "./hello.py" }Karmaşık değişkenleri
variable-overrides.jsondosyasında da tanımlayabilirsiniz.
Not
Sağladığınız değişken değerleri için hangi yaklaşımı seçerseniz seçin, dağıtım ve çalıştırma aşamalarında aynı yöntemi kullanın. Aksi takdirde, bir dağıtımın zamanı ile mevcut dağıtımı temel alan bir iş veya işlem hattı çalıştırması arasında beklenmeyen sonuçlar alabilirsiniz.
Öncelik sırası
Databricks CLI, değişkenlerin değerlerini aşağıdaki sırayla arar ve bir değişken için değer bulduğunda durduruluyor:
- Komutta belirtilen seçeneklerden herhangi biri içinde
--varbundle. - ile
BUNDLE_VAR_başlayan tüm ortam değişkenleri kümesi içinde. - varsa,
variable-overrides.jsondosyasının içinde. - Paket yapılandırma dosyalarınızın içindeki
variableseşlemelerinden herhangi birinin içinde,targetseşlemeleri arasında. - Paket yapılandırma dosyalarınızdaki en üst düzey
defaulteşlemeler arasında bu değişkenin tanımı için herhangi birvariablesdeğer.
Karmaşık değişken tanımlama
Özel değişkenin, karmaşık bir değişken olarak tanımlamadığınız sürece dize türünde olduğu varsayılır. Paket yapılandırmanızda paketinize yönelik karmaşık bir türe sahip özel bir değişken tanımlamak için typecomplexolarak ayarlayın.
Not
Ayar için type tek geçerli değer olur complex. Şayet typecomplex olarak ayarlanmışsa ve değişken için tanımlanan default tek bir değer ise, paket doğrulaması başarısız olur.
Aşağıdaki örnekte, küme ayarları adlı my_clusterözel bir karmaşık değişken içinde tanımlanır:
variables:
my_cluster:
description: 'My cluster definition'
type: complex
default:
spark_version: '13.2.x-scala2.11'
node_type_id: 'Standard_DS3_v2'
num_workers: 2
spark_conf:
spark.speculation: true
spark.databricks.delta.retentionDurationCheck.enabled: false
resources:
jobs:
my_job:
job_clusters:
- job_cluster_key: my_cluster_key
new_cluster: ${var.my_cluster}
tasks:
- task_key: hello_task
job_cluster_key: my_cluster_key
Aşağıdaki örnekte gösterildiği gibi .databricks/bundle/<target>/variable-overrides.json dosyasında da karmaşık bir değişken tanımlayabilirsiniz:
{
"my_cluster": {
"spark_version": "13.2.x-scala2.11",
"node_type_id": "Standard_DS3_v2",
"num_workers": 2
}
}
Nesnenin kimlik değerini alma
alert, cluster_policy, cluster, dashboard, instance_pool, job, metastore, notification_destination, pipeline, query, service_principal, ve warehouse nesne türleri için, adlandırılmış bir nesnenin kimliğini almak için özel değişkeniniz için lookup şu biçimi kullanarak tanımlayabilirsiniz:
variables:
<variable-name>:
lookup:
<object-type>: '<object-name>'
Bir değişken için arama tanımlanmışsa, değişkenin değeri olarak belirtilen ada sahip nesnenin kimliği kullanılır. Bu, değişken için nesnenin doğru çözümlenmiş kimliğinin her zaman kullanılmasını sağlar.
Not
Belirtilen ada sahip bir nesne yoksa veya belirtilen ada sahip birden fazla nesne varsa hata oluşur.
Örneğin, aşağıdaki yapılandırmada, ${var.my_cluster_id} 12.2 paylaşılan kümesinin kimliğiyle değiştirilecektir.
variables:
my_cluster_id:
description: An existing cluster
lookup:
cluster: '12.2 shared'
resources:
jobs:
my_job:
name: 'My Job'
tasks:
- task_key: TestTask
existing_cluster_id: ${var.my_cluster_id}
Çıkış değiştirme ve değişken değerleri
Değiştirmelerinizin ve değişkenlerinizin Bildirim temelli Otomasyon Paketleri tarafından doğru şekilde belirtildiğinden ve ayrıştırıldığından emin olmak için komutunu çalıştırın databricks bundle validate. Bkz. databricks paketi doğrulama. Paket dağıtırken kullanılacak değerleri görüntülemek için şu --output json seçeneği kullanın:
databricks bundle validate --output json
Örneğin, bir iş görevinde tanımlanan ve kullanılan değişkene my_cluster_id sahip bir paket için:
bundle:
name: variables_bundle
variables:
my_cluster_id:
default: 1234-567890-abcde123
resources:
jobs:
variables_bundle_job:
name: variables_bundle_job
tasks:
- task_key: notebook_task
existing_cluster_id: ${var.my_cluster_id}
notebook_task:
notebook_path: ../src/notebook.ipynb
Şema çıktısı databricks bundle validate aşağıdaki gibi olacaktır:
{
"bundle": {
"..."
"name": "variables_bundle",
"target": "dev",
"..."
},
"resources": {
"jobs": {
"variables_bundle_job": {
"deployment": {
"kind": "BUNDLE",
"metadata_file_path": "/Workspace/Users/someone@example.com/.bundle/variables_bundle/dev/state/metadata.json"
},
"max_concurrent_runs": 4,
"name": "[dev someone] variables_bundle_job",
"tasks": [
{
"existing_cluster_id": "1234-567890-abcde123",
"notebook_task": {
"notebook_path": "/Workspace/Users/someone@example.com/.bundle/variables_bundle/dev/files/variables_bundle/src/notebook"
},
"task_key": "notebook_task"
},
],
"..."
}
}
},
"..."
"variables": {
"my_cluster_id": {
"default": "1234-567890-abcde123",
"value": "1234-567890-abcde123"
}
},
"..."
}