Databricks Varlık Paketi yapılandırmaları
Bu makalede Databricks Varlık Paketleri'ni tanımlayan Databricks Varlık Paketi yapılandırma dosyalarının söz dizimi açıklanmaktadır. Bkz . Databricks Varlık Paketleri nedir?
Paket yapılandırma dosyası YAML biçiminde ifade edilmeli ve en azından en üst düzey paket eşlemesini içermelidir. Her paket, adlı databricks.yml
en az bir (ve yalnızca bir) paket yapılandırma dosyası içermelidir. Birden çok paket yapılandırma dosyası varsa, dosya tarafından databricks.yml
bunlara başvurulmalıdır.
YAML hakkında daha fazla bilgi için resmi YAML belirtimi ve öğreticisine bakın.
Paket yapılandırma dosyaları oluşturmak ve bunlarla çalışmak için bkz . Databricks Varlık Paketleri geliştirme.
Genel Bakış
Bu bölüm, paket yapılandırma dosyası şemasının görsel bir gösterimini sağlar. Ayrıntılar için bkz . Eşlemeler.
# These is the default bundle configuration if not otherwise overridden in
# the "targets" top-level mapping.
bundle: # Required.
name: string # Required.
databricks_cli_version: string
compute_id: string
git:
origin_url: string
branch: string
# These are for any custom variables for use throughout the bundle.
variables:
<some-unique-variable-name>:
description: string
default: string or complex
# These are the default workspace settings if not otherwise overridden in
# the following "targets" top-level mapping.
workspace:
artifact_path: string
auth_type: string
azure_client_id: string # For Azure Databricks only.
azure_environment: string # For Azure Databricks only.
azure_login_app_id: string # For Azure Databricks only. Non-operational and reserved for future use.
azure_tenant_id: string # For Azure Databricks only.
azure_use_msi: true | false # For Azure Databricks only.
azure_workspace_resource_id: string # For Azure Databricks only.
client_id: string # For Databricks on AWS only.
file_path: string
google_service_account: string # For Databricks on Google Cloud only.
host: string
profile: string
root_path: string
state_path: string
# These are the permissions to apply to experiments, jobs, models, and pipelines defined
# in the "resources" mapping.
permissions:
- level: <permission-level>
group_name: <unique-group-name>
- level: <permission-level>
user_name: <unique-user-name>
- level: <permission-level>
service_principal_name: <unique-principal-name>
# These are the default artifact settings if not otherwise overridden in
# the following "targets" top-level mapping.
artifacts:
<some-unique-artifact-identifier>:
build: string
files:
- source: string
path: string
type: string
# These are any additional configuration files to include.
include:
- "<some-file-or-path-glob-to-include>"
- "<another-file-or-path-glob-to-include>"
# This is the identity to use to run the bundle
run_as:
- user_name: <user-name>
- service_principal_name: <service-principal-name>
# These are the default job and pipeline settings if not otherwise overridden in
# the following "targets" top-level mapping.
resources:
experiments:
<some-unique-programmatic-identifier-for-this-experiment>:
# See the Experiments API's create experiment request payload reference.
jobs:
<some-unique-programmatic-identifier-for-this-job>:
# See the Jobs API's create job request payload reference.
models:
<some-unique-programmatic-identifier-for-this-model>:
# See the Models API's create model request payload reference.
pipelines:
<some-unique-programmatic-identifier-for-this-pipeline>:
# See the Delta Live Tables API's create pipeline request payload reference.
# These are any additional files or paths to include or exclude.
sync:
include:
- "<some-file-or-path-glob-to-include>"
- "<another-file-or-path-glob-to-include>"
exclude:
- "<some-file-or-path-glob-to-exclude>"
- "<another-file-or-path-glob-to-exclude>"
# These are the targets to use for deployments and workflow runs. One and only one of these
# targets can be set to "default: true".
targets:
<some-unique-programmatic-identifier-for-this-target>:
artifacts:
# See the preceding "artifacts" syntax.
bundle:
# See the preceding "bundle" syntax.
compute_id: string
default: true | false
mode: development
resources:
# See the preceding "resources" syntax.
sync:
# See the preceding "sync" syntax.
variables:
<preceding-unique-variable-name>: <non-default-value>
workspace:
# See the preceding "workspace" syntax.
run_as:
# See the preceding "run_as" syntax.
Örnekler
Aşağıda örnek bir paket yapılandırma dosyası verilmiştir. Bu paket, adlı bu yerel paket yapılandırma dosyasıyla aynı dizinde yer alan adlı hello.py
bir yerel dosyanın uzak dağıtımını databricks.yml
belirtir. Belirtilen küme kimliğine sahip uzak kümeyi kullanarak bu not defterini bir iş olarak çalıştırır. Uzak çalışma alanı URL'si ve çalışma alanı kimlik doğrulaması kimlik bilgileri, çağıranın adlı DEFAULT
yerel yapılandırma profilinden okunur.
Not
Databricks, paket yapılandırma dosyalarınızı daha taşınabilir hale getirdiğinden mümkün olduğunca eşleme yerine default
eşlemeyi kullanmanızı host
önerir. Eşlemeyi host
ayarlamak, Databricks CLI'ya dosyanızda .databrickscfg
eşleşen bir profil bulmasını ve ardından kullanılacak Databricks kimlik doğrulama türünü belirlemek için bu profilin alanlarını kullanmasını gerektirir. Dosyanızda .databrickscfg
eşleşen host
bir alana sahip birden çok profil varsa, Databricks CLI'ya hangi profilin kullanılacağını bildirmek için öğesini kullanmanız profile
gerekir. Bir örnek için bu bölümün devamında yer alan prod
hedef bildirimine bakın.
Bu teknik, bloktaki iş tanımlarını ve ayarlarını geçersiz kılmanın yanı sıra yeniden kullanmanıza resources
da olanak tanır:
bundle:
name: hello-bundle
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
targets:
dev:
default: true
Aşağıdaki paket yapılandırma dosyası işlevsel olarak eşdeğer olsa da, modüler hale getirilmemiştir ve bu da iyi yeniden kullanımı etkinleştirmez. Ayrıca, bu bildirim var olan işi geçersiz kılma yerine işe bir görev ekler:
bundle:
name: hello-bundle
targets:
dev:
default: true
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
Aşağıda, önceki modülerleştirilmiş örnek verilmiştir, ancak çağıranın .databrickscfg
dosyasının belirtilen çalışma alanı URL'si ile eşleşen host
girdisinden okunan farklı bir uzak çalışma alanı URL'si ve çalışma alanı kimlik doğrulaması kimlik bilgileri kullanan programlı (veya mantıksal) ada prod
sahip bir hedef eklenerek. Bu iş aynı not defterini çalıştırır ancak belirtilen küme kimliğine sahip farklı bir uzak küme kullanır. Eşlemenin eşleme içinde prod
açıkça geçersiz kılınmaması durumunda eşlemeyi üst düzey resources
eşleme içinde kullanmaya notebook_task
geri döndüğünden eşleme içinde eşlemeyi notebook_task
bildirmeniz notebook_task
gerekmediğine prod
dikkat edin.
bundle:
name: hello-bundle
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
targets:
dev:
default: true
prod:
workspace:
host: https://<production-workspace-url>
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 2345-678901-fabcd456
Bu işi doğrulamak, dağıtmak ve hedef içinde dev
çalıştırmak için aşağıdaki komutları çalıştırın:
# Because the "dev" target is set to "default: true",
# you do not need to specify "-t dev":
databricks bundle validate
databricks bundle deploy
databricks bundle run hello_job
# But you can still explicitly specify it, if you want or need to:
databricks bundle validate
databricks bundle deploy -t dev
databricks bundle run -t dev hello_job
Bunun yerine bu işi doğrulamak, dağıtmak ve hedef içinde prod
çalıştırmak için aşağıdaki komutları çalıştırın:
# You must specify "-t prod", because the "dev" target
# is already set to "default: true":
databricks bundle validate
databricks bundle deploy -t prod
databricks bundle run -t prod hello_job
Aşağıda önceki örnek verilmiştir, ancak daha da modüler hale getirme ve birden çok paket yapılandırma dosyası arasında daha iyi yeniden kullanım için bileşen dosyalarına ayrılmıştır. Bu teknik, çeşitli tanımları ve ayarları yeniden kullanmanıza olanak tanır, aynı zamanda bu dosyalardan herhangi birini tamamen farklı bildirimler sağlayan diğer dosyalarla değiştirebilirsiniz:
databricks.yml
:
bundle:
name: hello-bundle
include:
- "bundle*.yml"
bundle.resources.yml
:
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
bundle.targets.yml
:
targets:
dev:
default: true
prod:
workspace:
host: https://<production-workspace-url>
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 2345-678901-fabcd456
Daha fazla örnek için GitHub'daki paket örnekleri deposuna bakın.
Eşleştirmeleri
Aşağıdaki bölümlerde, üst düzey eşlemeye göre paket yapılandırma dosyası söz dizimi açıklanmaktadır.
bohça
Paket yapılandırma dosyası, paketin içeriğini ve Azure Databricks çalışma alanı ayarlarını ilişkilendiren yalnızca bir üst düzey bundle
eşleme içermelidir.
Bu bundle
eşleme, paket için programlı (veya mantıksal) bir ad belirten bir eşleme içermelidir name
. Aşağıdaki örnekte programlı (veya mantıksal) adlı bir paket bildirmektedir hello-bundle
.
bundle:
name: hello-bundle
Eşleme bundle
, üst düzey hedef eşlemesindeki bir veya daha fazla hedefin alt öğesi de olabilir. Bu alt bundle
eşlemelerin her biri, hedef düzeyde varsayılan olmayan geçersiz kılmaları belirtir. Ancak, üst düzey bundle
eşlemenin name
değeri hedef düzeyde geçersiz kılınamaz.
compute_id
Eşlemenin bundle
alt eşlemesi compute_id
olabilir. Bu eşleme, paket yapılandırma dosyasının başka bir yerinde tanımlanan tüm kümeler için geçersiz kılma olarak kullanılacak küme kimliğini belirtmenize olanak tanır. Bu geçersiz kılma, üretimden önceki yalnızca geliştirme senaryolarına yöneliktir. Eşleme compute_id
yalnızca eşlemesi olarak ayarlanmış development
hedef mode
için çalışır. Eşleme hakkında compute_id
daha fazla bilgi için bkz . hedefler eşlemesi.
aptal
Paketinizle ilişkili Git sürüm denetimi ayrıntılarını alabilir ve geçersiz kılabilirsiniz. Bu, dağıtılan kaynaklarınıza ek açıklama ekleme için kullanışlıdır. Örneğin, deponuzun kaynak URL'sini dağıttığınız bir makine öğrenmesi modelinin açıklamasına eklemek isteyebilirsiniz.
gibi run
validate
deploy
bir bundle
komutu her çalıştırdığınızdabundle
, komut komutun yapılandırma ağacını aşağıdaki varsayılan ayarlarla doldurur:
bundle.git.origin_url
, deponun kaynak URL'sini temsil eder. Bu, komutunu kopyalanmış deponuzdan çalıştırdığınızdagit config --get remote.origin.url
elde edeceğiniz değerle aynıdır. Bu değere, olarak paket yapılandırma dosyalarınızla${bundle.git.origin_url}
başvurmak için değiştirmeleri kullanabilirsiniz.bundle.git.branch
, depo içindeki geçerli dalı temsil eder. Bu, komutunu kopyalanmış deponuzdan çalıştırdığınızdagit branch --show-current
elde edeceğiniz değerle aynıdır. Bu değere, olarak paket yapılandırma dosyalarınızla${bundle.git.branch}
başvurmak için değiştirmeleri kullanabilirsiniz.bundle.git.commit
, depo içindeki işlemeyiHEAD
temsil eder. Bu, komutunu kopyalanmış deponuzdan çalıştırdığınızdagit rev-parse HEAD
elde edeceğiniz değerle aynıdır. Bu değere, olarak paket yapılandırma dosyalarınızla${bundle.git.commit}
başvurmak için değiştirmeleri kullanabilirsiniz.
Git ayarlarını almak veya geçersiz kılmak için paketinizin git deposuyla ilişkilendirilmiş bir dizin içinde olması gerekir. Örneğin, komutu çalıştırılarak git clone
başlatılan yerel dizin. Dizin bir Git deposuyla ilişkilendirilmemişse, bu Git ayarları boş olur.
Ve ayarlarını, gerekirse en üst düzey bundle
eşlemenizin eşlemesi içinde git
aşağıdaki gibi geçersiz kılabilirsiniz origin_url
branch
:
bundle:
git:
origin_url: <some-non-default-origin-url>
branch: <some-non-current-branch-name>
databricks_cli_version
Eşleme, bundle
paketin gerektirdiği Databricks CLI sürümünü kısıtlayan bir databricks_cli_version
eşleme içerebilir. Bu, Databricks CLI'nın belirli bir sürümünde desteklenmeyen eşlemelerin kullanılmasından kaynaklanan sorunları önleyebilir.
Databricks CLI sürümü anlamsal sürüm oluşturma ile uyumlu ve databricks_cli_version
eşleme sürüm kısıtlamalarını belirtmeyi destekler. Geçerli databricks --version
değer paket eşlemesinde belirtilen sınırlar içinde değilse, pakette databricks_cli_version
yürütürken databricks bundle validate
bir hata oluşur. Aşağıdaki örneklerde bazı yaygın sürüm kısıtlaması söz dizimi gösterilmektedir:
bundle:
name: hello-bundle
databricks_cli_version: "0.218.0" # require Databricks CLI 0.218.0
bundle:
name: hello-bundle
databricks_cli_version: "0.218.*" # allow all patch versions of Databricks CLI 0.218
bundle:
name: my-bundle
databricks_cli_version: ">= 0.218.0" # allow any version of Databricks CLI 0.218.0 or higher
bundle:
name: my-bundle
databricks_cli_version: ">= 0.218.0, <= 1.0.0" # allow any Databricks CLI version between 0.218.0 and 1.0.0, inclusive
Değişken
Paket ayarları dosyası, kullanılacak değişken ayarlarını belirtmek için bir üst düzey variables
eşleme içerebilir. Bkz. Özel değişkenler.
çalışma alanı
Paket yapılandırma dosyası, kullanılacak varsayılan olmayan Azure Databricks çalışma alanı ayarlarını belirtmek için yalnızca bir üst düzey workspace
eşleme içerebilir.
Bu workspace
eşleme, hem dağıtımlar hem de iş akışı çalıştırmaları için çalışma alanında kullanılacak varsayılan olmayan bir kök yol belirtmek için bir root_path
eşleme içerebilir, örneğin:
workspace:
root_path: /Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}
Varsayılan olarak, Databricks CLI için root_path
değiştirmeleri kullanan varsayılan yolunu /Users/${workspace.current_user.userName}/.bundle/${bundle.name}/${bundle.target}
kullanır.
Bu workspace
eşleme, hem dağıtımlar hem de iş akışı çalıştırmaları için çalışma alanında kullanılacak varsayılan olmayan bir yapıt yolu belirtmek için bir eşleme de içerebilir artifact_path
, örneğin:
workspace:
artifact_path: /Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}/artifacts
Varsayılan olarak, Databricks CLI için artifact_path
değiştirmeleri kullanan varsayılan yolunu ${workspace.root}/artifacts
kullanır.
.. not:: artifact_path
Eşleme Databricks Dosya Sistemi (DBFS) yollarını desteklemez.
Bu workspace
eşleme, hem dağıtımlar hem de iş akışı çalıştırmaları için çalışma alanında kullanılacak varsayılan olmayan bir dosya yolu belirtmek için bir eşleme de içerebilir file_path
, örneğin:
workspace:
file_path: /Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}/files
Varsayılan olarak, Databricks CLI için file_path
değiştirmeleri kullanan varsayılan yolunu ${workspace.root}/files
kullanır.
Eşleme state_path
varsayılan olarak öğesinin varsayılan yolunu ${workspace.root}/state
kullanır ve dağıtımlar hakkındaki Terraform durum bilgilerini depolamak için çalışma alanınızdaki yolu temsil eder.
Eşleme workspace
, kullanılacak Azure Databricks kimlik doğrulama mekanizmasını belirtmek için aşağıdaki isteğe bağlı eşlemeleri de içerebilir. Bu workspace
eşleme içinde belirtilmezlerse, bir eşlemede en üst düzey hedef eşlemesindeki workspace
bir veya daha fazla hedefin alt öğesi olarak belirtilmelidir.
Önemli
Azure Databricks kimlik doğrulaması için aşağıdaki workspace
eşlemeler için değerleri sabit kodlamalısınız. Örneğin, söz dizimini ${var.*}
kullanarak bu eşlemelerin değerleri için özel değişkenler belirtemezsiniz.
profile
Eşleme (veya--profile
paketi çalıştırırken databricks-p
CLI ile komutları doğrulama, dağıtma, çalıştırma ve yok etme seçenekleri), Azure Databricks kimlik doğrulaması için bu çalışma alanıyla kullanılacak yapılandırma profilinin adını belirtir. Bu yapılandırma profili, Databricks CLI'yı ayarlarken oluşturduğunuz profille eşler.Not
Databricks, eşleme yerine eşlemeyi
host
(veya--profile
paket doğrulama, dağıtma, çalıştırma ve yok etme komutlarını Databricks CLI ile çalıştırırken veya-p
seçeneklerini) kullanmanızı önerir, bu da paket yapılandırma dosyalarınızı daha taşınabilir haleprofile
getirir. Eşlemeyihost
ayarlamak, Databricks CLI'ya dosyanızda.databrickscfg
eşleşen bir profil bulmasını ve ardından kullanılacak Databricks kimlik doğrulama türünü belirlemek için bu profilin alanlarını kullanmasını gerektirir. Dosyanızda eşleşenhost
alana sahip birden çok profil varsa, Databricks CLI'ye hangi profilin kullanılacağını bildirmek için eşlemeyi (veya--profile
veya-p
komut satırı seçeneklerini) kullanmanızprofile
.databrickscfg
gerekir. Örnek için örneklerdeprod
hedef bildirimine bakın.Eşleme,
host
Azure Databricks çalışma alanınızın URL'sini belirtir. Bkz . Çalışma alanı başına URL.OAuth makineden makineye (M2M) kimlik doğrulaması için eşleme
client_id
kullanılır. Alternatif olarak, bu değeri yerel ortam değişkenindeDATABRICKS_CLIENT_ID
ayarlayabilirsiniz. Ya da değeriyleclient_id
bir yapılandırma profili oluşturabilir ve ardından eşlemeyleprofile
profilin adını belirtebilirsiniz (ya da databricks CLI ile doğrulama, dağıtma, çalıştırma ve yok etme komutlarını çalıştırırken veya-p
seçeneklerini kullanarak--profile
). Bkz. Azure Databricks ile kimlik doğrulaması yapmak için hizmet sorumlusu kullanma.Not
Paket yapılandırma dosyasında Azure Databricks OAuth gizli dizi değeri belirtemezsiniz. Bunun yerine yerel ortam değişkenini
DATABRICKS_CLIENT_SECRET
ayarlayın. Ya da değeri bir yapılandırma profiline ekleyebilirclient_secret
ve ardından eşlemeyleprofile
profilin adını belirtebilirsiniz (veya databricks CLI ile doğrulama, dağıtma, çalıştırma ve yok etme komutlarını çalıştırırken veya-p
seçeneklerini kullanarak--profile
).Azure CLI kimlik doğrulaması için eşleme
azure_workspace_resource_id
kullanılır. Alternatif olarak, bu değeri yerel ortam değişkenindeDATABRICKS_AZURE_RESOURCE_ID
ayarlayabilirsiniz. Ya da değeriyleazure_workspace_resource_id
bir yapılandırma profili oluşturabilir ve ardından eşlemeyleprofile
profilin adını belirtebilirsiniz (ya da databricks CLI ile doğrulama, dağıtma, çalıştırma ve yok etme komutlarını çalıştırırken veya-p
seçeneklerini kullanarak--profile
). Bkz. Azure CLI kimlik doğrulaması.Hizmet sorumlularıyla Azure istemci gizli anahtarı kimlik doğrulaması için ,
azure_tenant_id
veazure_client_id
eşlemeleriazure_workspace_resource_id
kullanılır. Alternatif olarak, bu değerleri sırasıyla ,ARM_TENANT_ID
veARM_CLIENT_ID
yerel ortam değişkenlerindeDATABRICKS_AZURE_RESOURCE_ID
ayarlayabilirsiniz. Alternatif olarak, , ve değerleriyleazure_workspace_resource_id
bir yapılandırma profili oluşturabilir veazure_client_id
ardından profilin adını eşlemeyleprofile
belirtebilirsiniz (veya databricks CLI ile doğrulama, dağıtma, çalıştırma ve yok etme komutlarını çalıştırırken veya-p
seçeneklerini kullanarak--profile
).azure_tenant_id
Bkz . Microsoft Entra ID hizmet sorumlusu kimlik doğrulaması.Not
Paket yapılandırma dosyasında bir Azure istemci gizli anahtarı değeri belirtemezsiniz. Bunun yerine yerel ortam değişkenini
ARM_CLIENT_SECRET
ayarlayın. Ya da değeri bir yapılandırma profiline ekleyebilirazure_client_secret
ve ardından eşlemeyleprofile
profilin adını belirtebilirsiniz (veya databricks CLI ile doğrulama, dağıtma, çalıştırma ve yok etme komutlarını çalıştırırken veya-p
seçeneklerini kullanarak--profile
).Azure yönetilen kimlik doğrulaması için ,
azure_client_id
veazure_workspace_resource_id
eşlemeleriazure_use_msi
kullanılır. Alternatif olarak, bu değerleri sırasıyla ,ARM_CLIENT_ID
veDATABRICKS_AZURE_RESOURCE_ID
yerel ortam değişkenlerindeARM_USE_MSI
ayarlayabilirsiniz. Alternatif olarak, , ve değerleriyleazure_use_msi
bir yapılandırma profili oluşturabilir veazure_workspace_resource_id
ardından profilin adını eşlemeyleprofile
belirtebilirsiniz (veya databricks CLI ile doğrulama, dağıtma, çalıştırma ve yok etme komutlarını çalıştırırken veya-p
seçeneklerini kullanarak--profile
).azure_client_id
Bkz. Azure yönetilen kimlikleri kimlik doğrulaması.Eşleme,
azure_environment
belirli bir API uç noktası kümesi için Azure ortam türünü (Genel, UsGov, Çin ve Almanya gibi) belirtir. Varsayılan değer şudur:PUBLIC
. Alternatif olarak, bu değeri yerel ortam değişkenindeARM_ENVIRONMENT
ayarlayabilirsiniz. Ya da değeri bir yapılandırma profiline ekleyebilirazure_environment
ve ardından eşlemeyleprofile
profilin adını belirtebilirsiniz (veya databricks CLI ile doğrulama, dağıtma, çalıştırma ve yok etme komutlarını çalıştırırken veya-p
seçeneklerini kullanarak--profile
).Eşleme
azure_login_app_id
işlemsel değildir ve iç kullanım için ayrılmıştır.Eşleme
auth_type
, özellikle Databricks CLI'sinin beklenmeyen bir kimlik doğrulama türü çıkardığı durumlarda kullanılacak Azure Databricks kimlik doğrulama türünü belirtir. Kimlik doğrulama türü alanına bakın.
izinler
Üst düzey permissions
eşleme, pakette tanımlanan tüm kaynaklara uygulanacak bir veya daha fazla izin düzeyini belirtir. Belirli bir kaynağa izin uygulamak istiyorsanız bkz . Belirli bir kaynak için izinleri tanımlama.
İzin verilen en üst düzey izin düzeyleri , CAN_MANAGE
ve CAN_RUN
'dırCAN_VIEW
.
Paket yapılandırma dosyasındaki aşağıdaki örnek, pakette tanımlanan resources
tüm işlere, işlem hatlarına, denemelere ve modellere uygulanan bir kullanıcı, grup ve hizmet sorumlusu için izin düzeylerini tanımlar:
permissions:
- level: CAN_VIEW
group_name: test-group
- level: CAN_MANAGE
user_name: someone@example.com
- level: CAN_RUN
service_principal_name: 123456-abcdef
Yapı
Üst düzey artifacts
eşleme, paket dağıtımları sırasında otomatik olarak oluşturulan ve daha sonra paket çalıştırmalarında kullanılabilen bir veya daha fazla yapıtı belirtir. Her alt yapıt aşağıdaki eşlemeleri destekler:
type
gereklidir. Dağıtmadan önce bir Python tekerlek dosyası oluşturmak için bu eşleme olarakwhl
ayarlanmalıdır.path
, paket yapılandırma dosyasının konumundan Python tekerleksetup.py
dosyasının konumuna kadar olan isteğe bağlı, göreli bir yoldur. Dahilpath
değilse Databricks CLI, Python tekerlek dosyasınınsetup.py
dosyasını paketin kökünde bulmaya çalışır.files
, karmaşık derleme yönergeleri için dahil etmek üzere varsayılan olmayan konumlar belirtmek için kullanabileceğiniz bir altsource
eşleme içeren isteğe bağlı bir eşlemedir. Konumlar, paket yapılandırma dosyasının konumundan göreli yollar olarak belirtilir.build
, dağıtımdan önce yerel olarak çalıştırmak istediğiniz isteğe bağlı bir varsayılan olmayan derleme komutları kümesidir. Python tekerleği derlemeleri için Databricks CLI, derlemeleri çalıştırmak için Pythonwheel
paketinin yerel bir yüklemesini bulabileceğini varsayar ve her paket dağıtımı sırasında varsayılan olarak komutunupython setup.py bdist_wheel
çalıştırır. Birden çok derleme komutu belirtmek için her komutu çift ve işareti (&&
) karakterle ayırın.
kullanan artifacts
örnek bir paket de dahil olmak üzere daha fazla bilgi için bkz . Databricks Varlık Paketlerini kullanarak Python tekerlek dosyası geliştirme.
İpucu
Databricks Varlık Paketlerinde yapıt ayarlarını dinamik olarak tanımlama başlığında açıklanan teknikleri kullanarak paketlerdeki yapıt ayarlarını tanımlayabilir, birleştirebilir ve geçersiz kılabilirsiniz.
kapsamak
dizi, include
pakete eklenecek yapılandırma dosyalarını içeren yol glob'larının listesini belirtir. Bu yol glob'ları, yol glob'larının belirtildiği paket yapılandırma dosyasının konumuna göre belirlenir.
Databricks CLI, paket içinde varsayılan olarak herhangi bir yapılandırma dosyası içermez. Paketin include
içine eklenecek tüm yapılandırma dosyalarını( dosyanın kendisi dışında) belirtmek için dizisini databricks.yml
kullanmanız gerekir.
Bu include
dizi yalnızca en üst düzey eşleme olarak görünebilir.
Bir paket yapılandırma dosyasındaki aşağıdaki örnek, belirtilen üç yapılandırma dosyasını içerir. Bu dosyalar paket yapılandırma dosyasıyla aynı dizindedir:
include:
- "bundle.artifacts.yml"
- "bundle.resources.yml"
- "bundle.targets.yml"
Bir paket yapılandırma dosyasındaki aşağıdaki örnek, ile bundle
başlayan ve ile .yml
biten dosya adlarına sahip tüm dosyaları içerir. Bu dosyalar paket yapılandırma dosyasıyla aynı dizindedir:
include:
- "bundle*.yml"
Kaynaklar
Eşleme, resources
paket tarafından kullanılan Azure Databricks kaynakları hakkındaki bilgileri belirtir.
Bu resources
eşleme en üst düzey eşleme olarak görünebilir veya en üst düzey hedef eşlemesindeki bir veya daha fazla hedefin alt öğesi olabilir ve desteklenen kaynak türlerinden sıfır veya birini içerir. Her kaynak türü eşlemesi, her birinin benzersiz bir ada sahip olması gereken bir veya daha fazla kaynak bildirimi içerir. Bu tek tek kaynak bildirimleri, kaynağı tanımlamak için ilgili nesnenin oluşturma işleminin YAML ile ifade edilen istek yükünü kullanır. Bir kaynağın desteklenen özellikleri, ilgili nesnenin desteklenen alanlarıdır.
oluşturma işlemi isteği yükleri Databricks REST API Başvurusu'nda belgelenir ve databricks bundle schema
komut desteklenen tüm nesne şemalarının çıkışını oluşturur. Ayrıca, paket yapılandırma dosyalarında databricks bundle validate
bilinmeyen kaynak özellikleri bulunursa komut uyarı döndürür.
Aşağıdaki tabloda, paketler için desteklenen kaynak türleri ve ilgili yükleriyle ilgili belgelere bağlantılar listelenmiştir.
Kaynak türü | Kaynak eşlemeleri |
---|---|
jobs |
İş eşlemeleri: POST /api/2.1/jobs/create Ek bilgi için bkz . iş görev türleri ve yeni iş kümesi ayarlarını geçersiz kılma. |
pipelines |
İşlem hattı eşlemeleri: POST /api/2.0/pipelines |
experiments |
Deneme eşlemeleri: POST /api/2.0/mlflow/experiment/create |
models |
Model eşlemeleri: POST /api/2.0/mlflow/registered-models/create |
model_serving_endpoints |
Uç nokta eşlemeleri sunan model: POST /api/2.0/serving-endpoints |
registered_models (Unity Kataloğu) |
Unity Katalog Modeli eşlemeleri: POST /api/2.1/unity-catalog/models |
Kaynak bildirimleri tarafından başvurulan klasörlerin ve dosyaların tüm yolları, bu yolların belirtildiği paket yapılandırma dosyasının konumuna göre belirlenir.
Aşağıdaki örnek, kaynak anahtarına sahip bir iş ve kaynak anahtarına hello-job
hello-pipeline
sahip bir işlem hattı bildirir:
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
pipelines:
hello-pipeline:
name: hello-pipeline
clusters:
- label: default
num_workers: 1
development: true
continuous: false
channel: CURRENT
edition: CORE
photon: false
libraries:
- notebook:
path: ./pipeline.py
Eşitleme
Eşleme, sync
aşağıdaki kurallara bağlı olarak paket dağıtımlarına eklenecek veya paket dağıtımlarının dışında tutulacak dosya veya yol glob'larının listesini belirtir:
- Paketin kökündeki bir
.gitignore
dosyadaki dosya ve yol globlarının listesine bağlı olarak,include
eşleme açıkça dahil etmek için paketin köküne göre dosya glob'ları, yol glob'ları veya her ikisini de içerebilir. - Paketin kökündeki bir
.gitignore
dosyadaki dosya ve yol glob'larının listesinin yanı sıra eşlemedekiinclude
dosya ve yol globlarının listesine bağlı olarak,exclude
eşleme açıkça dışlamak için paketin köküne göre dosya globları, yol glob'ları veya her ikisini de içerebilir.
Belirtilen klasörlerin ve dosyaların tüm yolları, bu yolların belirtildiği paket yapılandırma dosyasının konumuna göre belirlenir.
ve exclude
dosya ve yol desenlerinin söz dizimi include
standart .gitignore
desen söz dizimini izler. Bkz . gitignore Desen Biçimi.
Örneğin, aşağıdaki .gitignore
dosya aşağıdaki girdileri içeriyorsa:
.databricks
my_package/dist
Paket yapılandırma dosyası aşağıdaki include
eşlemeyi içerir:
sync:
include:
- my_package/dist/*.whl
Ardından, dosya uzantısına *.whl
sahip klasördeki my_package/dist
tüm dosyalar eklenir. Klasördeki my_package/dist
diğer dosyalar dahil değildir.
Ancak, paket yapılandırma dosyası da aşağıdaki exclude
eşlemeyi içeriyorsa:
sync:
include:
- my_package/dist/*.whl
exclude:
- my_package/dist/delete-me.whl
Ardından, adlı delete-me.whl
dosya dışındaki dosya uzantısına *.whl
sahip klasördeki tüm dosyalar my_package/dist
eklenir. Klasördeki my_package/dist
diğer dosyalar da dahil değildir.
Eşleme, sync
belirli bir hedef için eşlemede targets
de bildirilebilir. Hedefte bildirilen tüm sync
eşlemeler, en üst düzey sync
eşleme bildirimleriyle birleştirilir. Örneğin, önceki örnekten devam edersek, düzeydeki aşağıdaki include
eşleme targets
en üst düzey sync
eşlemedeki eşlemeyle include
birleştirilir:
targets:
dev:
sync:
include:
- my_package/dist/delete-me.whl
komutunu çalıştırdığınızda databricks bundle validate --output json
, sonuçta elde edilen grafiğin ilgili bölümü aşağıdaki gibidir:
"sync": {
"include": [
"my_package/dist/*.whl",
"my_package/dist/delete-me.whl"
],
"exclude": [
"my_package/dist/delete-me.whl"
]
}
Hedef
Eşleme, targets
Azure Databricks iş akışlarının çalıştırıldığı bir veya daha fazla bağlamı belirtir. Her hedef benzersiz bir yapıt koleksiyonu, Azure Databricks çalışma alanı ayarları ve Azure Databricks işi veya işlem hattı ayrıntılarıdır.
Bu targets
eşleme isteğe bağlıdır ancak kesinlikle önerilir. Belirtilirse, yalnızca üst düzey eşleme olarak görünebilir. targets
Eşleme belirtilmezse, üst düzey çalışma alanı, yapıtlar ve kaynak eşlemelerindeki ayarlar her zaman kullanılır.
Eşleme targets
, her birinin benzersiz bir programlı (veya mantıksal) ada sahip olması gereken bir veya daha fazla hedef eşlemeden oluşur.
Hedef eşleme , veya artifacts
resources
alt eşlemeleri belirtmiyorsaworkspace
, bu hedef en üst düzey workspace
, artifacts
ve resources
eşlemelerindeki ayarları kullanır.
Hedef eşleme bir workspace
, artifacts
veya resources
eşlemesi belirtirse ve en üst düzey workspace
, artifacts
veya resources
eşlemesi de varsa, çakışan ayarlar hedefteki ayarlar tarafından geçersiz kılınabilir.
Hedef, üst düzey değişkenlerin değerlerini de geçersiz kılabilir.
Aksi belirtilmedikçe hedefin varsayılan hedef olduğunu belirtmek için eşlemeyi default
ekleyin ve olarak true
ayarlayın. Örneğin, adlı dev
bu hedef varsayılan hedeftir:
targets:
dev:
default: true
Bir hedefin geliştirme hedefi olarak işleneceğini belirtmek için eşlemeyi mode
ekleyin ve olarak development
ayarlayın. Bir hedefin üretim hedefi olarak işleneceğini belirtmek için eşlemeyi mode
ekleyin ve olarak production
ayarlayın. Örneğin, adlı prod
bu hedef bir üretim hedefi olarak değerlendirilir:
targets:
prod:
mode: production
Belirtme, mode
üretim öncesi ve üretim iş akışları için karşılık gelen varsayılan davranışların bir koleksiyonunu sağlar. Ayrıntılar için bkz . Databricks Varlık Paketi dağıtım modları. Buna ek olarak, Databricks Varlık Paketleri iş akışı için bir çalıştırma kimliği belirtme bölümünde açıklandığı gibi her hedef için belirtebilirsinizrun_as
.
Aşağıdaki örnekte iki hedef bildirmektedir. İlk hedefin programlı (veya mantıksal) adı dev
vardır ve varsayılan hedeftir. İkinci hedefin programlı (veya mantıksal) adı prod
vardır ve varsayılan hedef değildir. Bu ikinci hedef, kimlik doğrulaması için adlı PROD
bir Azure Databricks bağlantı profili kullanır:
targets:
dev:
default: true
prod:
workspace:
host: https://<production-workspace-url>
Hedef içindeki dev
işleri veya işlem hatlarını doğrulamak, dağıtmak ve çalıştırmak için aşağıdaki komutları çalıştırın:
# Because the "dev" target is set to "default: true",
# you do not need to specify "-t dev":
databricks bundle validate
databricks bundle deploy
databricks bundle run <job-or-pipeline-programmatic-name>
# But you can still explicitly specify it, if you want or need to:
databricks bundle validate
databricks bundle deploy -t dev
databricks bundle run -t dev <job-or-pipeline-programmatic-name>
Bunun yerine bu işi doğrulamak, dağıtmak ve hedef içinde prod
çalıştırmak için aşağıdaki komutları çalıştırın:
# You must specify "-t prod", because the "dev" target
# is already set to "default: true":
databricks bundle validate
databricks bundle deploy -t prod
databricks bundle run -t prod <job-or-pipeline-programmatic-name>
Özel değişkenler
Paket yapılandırma dosyalarınızı daha modüler ve yeniden kullanılabilir hale getirmek için özel değişkenler kullanabilirsiniz. Örneğin, var olan bir kümenin kimliğini temsil eden bir değişken bildirebilir ve ardından bu değişkenin değerini, paket yapılandırma dosyalarınızın özgün kodunu değiştirmeden çeşitli iş akışı çalıştırmaları için farklı küme kimlikleriyle değiştirmek isteyebilirsiniz.
Özel değişkenler, eşleme içindeki variables
paket yapılandırma dosyalarınızda bildirilir. Her değişken için, aşağıdaki biçimi kullanarak bir kimlik değeri almak için isteğe bağlı bir açıklama, varsayılan değer, tür veya arama ayarlayın:
variables:
<variable-name>:
description: <optional-description>
default: <optional-default-value>
type: <optional-type-value>
lookup:
<optional-object-type>: <optional-object-name>
Not
olarak ayarlanmadığı complex
sürece type
değişkenlerin türünde string
olduğu varsayılır. Bkz. Karmaşık değişken tanımlama.
Örneğin, varsayılan değeri ile adlı my_cluster_id
bir değişken ve varsayılan değeri 1234-567890-abcde123
./hello.py
ile adlı my_notebook_path
bir değişken bildirmek için:
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, değişken değerini ayarlama bölümünde açıklandığı gibi paket komutlarını, ortam değişkeni aracılığıyla veya paket yapılandırma dosyalarınızın içinde başka bir yerde yürütürken bunu ayarlamanız gerekir.
Not
Değişken değerleri sağlamayı seçtiğiniz yaklaşım, hem dağıtım hem de çalıştırma aşamalarında aynı yaklaşımı 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.
Paket yapılandırma dosyalarınızda özel değişkenlerinize başvurmak için değiştirmeleri kullanın. Değişkenler için biçimini ${var.<variable_name>}
kullanın. Örneğin, ve my_notebook_path
adlı my_cluster_id
değişkenlere başvurmak için:
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
sağlamadıysanız veya 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:
Değişkenin değerini ,
deploy
veyarun
gibi bir komutun parçasıbundle
olarakvalidate
sağlayın. Bunu yapmak için, değişkenin adı ve<value>
değişkenin değeri olan seçeneğini--var="<key>=<value>"
<key>
kullanın. Örneğin, komutununbundle validate
bir parçası olarak, adlımy_cluster_id
değişkenine değerini1234-567890-abcde123
sağlamak ve adlımy_notebook_path
değişkenine./hello.py
değ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, adlı değişkene değerini1234-567890-abcde123
sağlamak ve adlımy_notebook_path
değişkenine./hello.py
değerini sağlamak için, , veyarun
gibivalidate
deploy
birbundle
komutu çağırmadan önce aşağıdaki komutu çalıştırın:my_cluster_id
Linux ve macOS için:
export BUNDLE_VAR_my_cluster_id=1234-567890-abcde123 && export BUNDLE_VAR_my_notebook_path=./hello.py
Windows 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 ,
deploy
veyarun
gibi birbundle
komutun parçası olarakvalidate
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 validate
Veya 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 değişkenin değerini belirtin. Bunu yapmak için eşleme içinde
targets
şu biçimi izleyerek birvariables
eşleme kullanın:variables: <variable-name>: <value>
Örneğin, adlı
my_cluster_id
my_notebook_path
değişkenler ve iki ayrı hedef için değerler sağlamak 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.py
Önceki örneklerde Databricks CLI değişkenlerin değerlerini arar ve my_notebook_path
eşleşen her değişken için bir değer bulduğunda durdurularak bu değişken için diğer konumları my_cluster_id
atlar:
- Komutun bir parçası olarak belirtilen tüm
--var
seçenekler içindebundle
. - ile
BUNDLE_VAR_
başlayan tüm ortam değişkenleri kümesi içinde. - Tüm
variables
eşlemeler içinde, paket yapılandırma dosyalarınızdaki eşlemeler arasındatargets
. - Paket yapılandırma dosyalarınızdaki en üst düzey
variables
eşlemeler arasında bu değişkenin tanımı için herhangi birdefault
değer.
Karmaşık değişken tanımlama
Paketinizin karmaşık türüne sahip bir özel değişken tanımlamak için paket yapılandırmanızda olarak complex
ayarlayıntype
.
Not
Ayar için type
tek geçerli değer olur complex
. Buna ek olarak, olarak ayarlanırsa complex
ve default
değişkeni için tanımlanan tek bir değerse type
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
Nesnenin kimlik değerini alma
alert
, , cluster_policy
, cluster
, dashboard
, instance_pool
, , job
, metastore
, , pipeline
, service_principal
query
, ve warehouse
nesne türleri için, şu biçimi kullanarak adlandırılmış bir nesnenin kimliğini almak üzere özel değişkeniniz için bir tanımlayabilirsinizlookup
:
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}
Değiştirmeler
Paket yapılandırma dosyalarınızı daha modüler ve yeniden kullanılabilir hale getirmek için değiştirmeleri kullanabilirsiniz.
İ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. Bkz. İş çalıştırmaları hakkındaki bağlamı iş görevlerine geçirme.
Örneğin, komutu çalıştırdığınızda bundle validate --output json
şuna benzer bir grafik görebilirsiniz (üç nokta kısalık için atlanmış içeriği gösterir):
{
"bundle": {
"name": "hello-bundle",
"target": "dev",
"...": "..."
},
"workspace": {
"...": "...",
"current_user": {
"...": "...",
"userName": "someone@example.com",
"...": "...",
},
"...": "..."
},
"...": {
"...": "..."
}
}
Yukarıdaki örnekte, yerine öğesini kullanarak paket yapılandırma dosyanızdaki değere someone@example.com
${workspace.current_user.userName}
başvurabilirsiniz.
Benzer şekilde, aşağıdaki değiştirmeler:
/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}
Aşağıdaki gibi bir paket yapılandırma dosyasında (üç nokta, kısa süre için atlanmış içeriği gösterir):
bundle:
name: hello-bundle
workspace:
root_path: /Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}
# ...
targets:
dev:
default: true
Komutunu çalıştırdığınızda bundle validate --output json
aşağıdaki grafiğe çözümlenir (üç nokta kısa bir süre için atlanmış içeriği gösterir):
{
"bundle": {
"name": "hello-bundle",
"target": "dev",
"...": "..."
},
"workspace": {
"profile": "DEFAULT",
"current_user": {
"...": "...",
"userName": "someone@example.com",
"...": "...",
},
"root": "/Users/someone@example.com/.bundle/hello-bundle/my-envs/dev",
"...": "..."
},
"...": {
"...": "..."
}
}
Adlandırılmış kaynaklar için değiştirmeler de oluşturabilirsiniz. Örneğin, adıyla my_pipeline
${resources.pipelines.my_pipeline.target}
yapılandırılan işlem hattı için hedefinin değerinin değiştirilmesidirmy_pipeline
.
Geçerli değiştirmeleri belirlemek için REST API başvurusunda veya komutun çıkışında belgelenen şema hiyerarşisini bundle schema
kullanabilirsiniz.
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.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}
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin