Aracılığıyla paylaş


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.ymlen 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.ymlbelirtir. 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ı DEFAULTyerel 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ış developmenthedef 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 runvalidatedeploy 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ızda git 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ızda git 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şlemeyi HEAD temsil eder. Bu, komutunu kopyalanmış deponuzdan çalıştırdığınızda git 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}/artifactskullanı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}/fileskullanı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 hale profile getirir. 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 eşleşen host 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ız profile .databrickscfg gerekir. Örnek için örneklerde prodhedef 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şkeninde DATABRICKS_CLIENT_IDayarlayabilirsiniz. Ya da değeriyle client_id bir yapılandırma profili oluşturabilir ve ardından eşlemeyle profile 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_SECRETayarlayın. Ya da değeri bir yapılandırma profiline ekleyebilir client_secret ve ardından eşlemeyle profile 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şkeninde DATABRICKS_AZURE_RESOURCE_IDayarlayabilirsiniz. Ya da değeriyle azure_workspace_resource_id bir yapılandırma profili oluşturabilir ve ardından eşlemeyle profile 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_idve azure_client_id eşlemeleri azure_workspace_resource_idkullanılır. Alternatif olarak, bu değerleri sırasıyla , ARM_TENANT_IDve ARM_CLIENT_IDyerel ortam değişkenlerinde DATABRICKS_AZURE_RESOURCE_IDayarlayabilirsiniz. Alternatif olarak, , ve değerleriyle azure_workspace_resource_idbir yapılandırma profili oluşturabilir ve azure_client_id ardından profilin adını eşlemeyle profile 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_SECRETayarlayın. Ya da değeri bir yapılandırma profiline ekleyebilir azure_client_secret ve ardından eşlemeyle profile 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_idve azure_workspace_resource_id eşlemeleri azure_use_msikullanılır. Alternatif olarak, bu değerleri sırasıyla , ARM_CLIENT_IDve DATABRICKS_AZURE_RESOURCE_IDyerel ortam değişkenlerinde ARM_USE_MSIayarlayabilirsiniz. Alternatif olarak, , ve değerleriyle azure_use_msibir yapılandırma profili oluşturabilir ve azure_workspace_resource_id ardından profilin adını eşlemeyle profile 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şkeninde ARM_ENVIRONMENTayarlayabilirsiniz. Ya da değeri bir yapılandırma profiline ekleyebilir azure_environment ve ardından eşlemeyle profile 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_MANAGEve 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 olarak whlayarlanmalıdır.
  • path , paket yapılandırma dosyasının konumundan Python tekerlek setup.py dosyasının konumuna kadar olan isteğe bağlı, göreli bir yoldur. Dahil path değilse Databricks CLI, Python tekerlek dosyasının setup.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 alt source 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 Python wheel paketinin yerel bir yüklemesini bulabileceğini varsayar ve her paket dağıtımı sırasında varsayılan olarak komutunu python 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 .ymlbiten 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-pipelinesahip 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şlemedeki include 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.whldosya dışındaki dosya uzantısına *.whlsahip 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 artifactsresources alt eşlemeleri belirtmiyorsaworkspace, bu hedef en üst düzey workspace, artifactsve resources eşlemelerindeki ayarları kullanır.

Hedef eşleme bir workspace, artifactsveya resources eşlemesi belirtirse ve en üst düzey workspace, artifactsveya 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 trueayarlayı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 developmentayarlayın. Bir hedefin üretim hedefi olarak işleneceğini belirtmek için eşlemeyi mode ekleyin ve olarak productionayarlayı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ığı complexsürece type değişkenlerin türünde stringolduğ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.pyile 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_pathadlı 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 , deployveya rungibi bir komutun parçası bundle olarak validatesağ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, komutunun bundle validate bir parçası olarak, adlı my_cluster_iddeğişkenine değerini 1234-567890-abcde123 sağlamak ve adlı my_notebook_pathdeğ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ğerini 1234-567890-abcde123 sağlamak ve adlı my_notebook_pathdeğişkenine ./hello.py değerini sağlamak için, , veya rungibi validatedeploybir bundle 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 , deployveya rungibi bir bundle komutun parçası olarak validatesağ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 bir variables 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:

  1. Komutun bir parçası olarak belirtilen tüm --var seçenekler içinde bundle .
  2. ile BUNDLE_VAR_başlayan tüm ortam değişkenleri kümesi içinde.
  3. Tüm variables eşlemeler içinde, paket yapılandırma dosyalarınızdaki eşlemeler arasında targets .
  4. 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 bir default 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_principalquery, 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}