Aracılığıyla paylaş


Databricks Varlık Paketi proje şablonları

Databricks Varlık Paketleri işler, işlem hatları ve not defterleri gibi Databricks kaynaklarını kaynak dosya olarak açıklar, altyapı ve diğer kaynakları sağlamak için bu kaynak dosyaların yanı sıra meta verileri de eklemenize olanak tanır ve tümü tek bir dağıtılabilir proje olarak paketlenmiş bir projenin uçtan uca tanımını sağlar. Bkz . Databricks Varlık Paketleri nedir?.

Paket şablonları, kullanıcıların bir dağıtım işlem hattında ortak olan klasör yapıları, derleme adımları ve görevleri, testleri ve diğer DevOps kod olarak altyapı (IaC) özniteliklerini oluşturarak tutarlı ve yinelenebilir bir şekilde paket oluşturmasına olanak tanır.

Örneğin, yüklemeden sonra zaman alan bir derleme adımıyla özel paketler gerektiren Databricks işlerini düzenli olarak çalıştırırsanız, özel kapsayıcı ortamını belirten bir paket şablonu oluşturarak geliştirme döngünüzü hızlandırabilirsiniz.

Databricks, varsayılan paket şablonları kümesi sağlar, ancak özel paket şablonları da oluşturabilirsiniz. Kullanıcılar daha sonra bundle init komutunukullanarak varsayılan şablonu veya özel şablonunuzu belirterek paketleri başlatabilir.

Şablon kullanarak paket oluşturma

Paketinizi oluşturmak için Azure Databricks paket şablonu kullanmak için, kullanılacak şablonun adını belirterek Databricks CLIbundle init komutunu kullanın. Örneğin, aşağıdaki komut varsayılan Python paket şablonunu kullanarak bir paket oluşturur:

databricks bundle init default-python

Özel paket şablonu kullanmak için, şablonun yerel yolunu veya uzak URL'sini Databricks CLIbundle init komutuna geçirin.

Örneğin, aşağıdaki komut Özel Paket Şablonu Öğreticisi'nde dab-container-templateoluşturulan şablonu kullanır:

databricks bundle init /projects/my-custom-bundle-templates/dab-container-template

Bir şablon belirtmezseniz, bundle init komutu aralarından seçim yapabileceğiniz kullanılabilir varsayılan şablonlar kümesini ister.

Varsayılan paket şablonları

Azure Databricks aşağıdaki varsayılan paket şablonlarını sağlar:

Şablon Açıklama
default-python Databricks ile Python kullanmaya yönelik bir şablon. Bu şablon, bir iş ve DLT işlem hattı ile bir paket oluşturur. Bkz. default-python.
default-sql Databricks ile SQL kullanmaya yönelik bir şablon. Bu şablon, SQL ambarı üzerinde SQL sorguları çalıştıran bir işi tanımlayan bir yapılandırma dosyası içerir. Bkz. default-sql.
dbt-sql Yerel geliştirme için dbt-core ve dağıtım paketlerinden yararlanan bir şablon. Bu şablon, dbt görevi olan bir işi tanımlayan yapılandırmanın yanı sıra dağıtılan dbt işleri için dbt profillerini tanımlayan bir yapılandırma dosyasını içerir. Bkz. dbt-sql.
mlops-stacks Yeni MLOps Stacks projelerini başlatmak için gelişmiş bir tam yığın şablonu. Bkz. mlops-stacks ve MLOps Yığınları için Databricks Varlık Paketleri.

özel paket şablonları

Paket şablonları, oluşturabileceğiniz özel paket şablonlarında esneklik sağlayan Go paketi şablon oluşturma söz dizimini kullanır. Go paket şablonu belgelerine bakın.

Proje yapısı şablonu

En azından bir paket şablonu projesinin şunları içermesi gerekir:

  • Proje kökünde paket proje adı için bir kullanıcı istemi özelliği tanımlayan bir databricks_template_schema.json dosyası. Bkz. Şablon şeması.
  • databricks.yml.tmpl Şablonla oluşturulan tüm paketler için yapılandırmayı tanımlayan bir template klasörde bulunan dosya. Dosyanız databricks.yml.tmpl ek *.yml.tmpl yapılandırma şablonlarına başvuruda bulunuyorsa bunların eşlemedeki include konumunu belirtin. Bkz. Yapılandırma şablonları.

Ayrıca, klasör yapısı ve paket şablonu projesi template klasörünün dahil edilen dosyaları, şablonla oluşturulan paketlerle yansıtılır. Örneğin, şablonun src klasöründe basit bir not defteri ve resources klasöründe not defterini çalıştıran bir iş tanımı içeren bir paket oluşturmasını istiyorsanız, şablon projenizi şu şekilde düzenleyebilirsiniz:

basic-bundle-template
  ├── databricks_template_schema.json
  └── template
      └── {{.project_name}}
          ├── databricks.yml.tmpl
          ├── resources
          │   └── {{.project_name}}_job.yml.tmpl
          └── src
              └── simple_notebook.ipynb

İpucu

Bu paket şablonundaki proje klasörü adı ve iş tanımı dosyasının adı bir şablon değişkeni kullanır. Şablon yardımcıları ve değişkenleri hakkında bilgi için bkz. Şablon yardımcıları ve değişkenleri.

Şablon şeması

Özel paket şablonu projesi, proje kökündebir databricks_template_schema.json JSON dosyası içermelidir. Bu dosya, bundle init komutu çalıştırıldığında Databricks CLI tarafından kullanılan alanları (istem metni gibi) tanımlar.

Aşağıdaki temel databricks_template_schema.json dosyası, paket projesi için istem iletisini ve varsayılan değeri içeren bir giriş değişkeni project_name tanımlar. Ardından, ileti içindeki giriş değişkeni değerini kullanan bunde proje başlatması için bir başarı iletisi tanımlar.

{
  "properties": {
    "project_name": {
      "type": "string",
      "default": "basic_bundle",
      "description": "What is the name of the bundle you want to create?",
      "order": 1
    }
  },
  "success_message": "\nYour bundle '{{.project_name}}' has been created."
}

Şablon şeması alanları

databricks_template_schema.json dosyası, properties alanı içinde kullanıcınızdan paket başlatma sırasında bilgi toplamak için giriş değişkenleri tanımlamayı ve başlatmayı özelleştirmek için ek alanları destekler.

Giriş değişkenleri, şablon şemasının properties alanında tanımlanır. Her giriş değişkeni, paket başlatma sırasında kullanıcıya istem sunmak için gereken meta verileri tanımlar. Değişkenin değerine daha sonra {{.project_name}}gibi şablon değişkeni söz dizimi kullanılarak erişilebilir.

Paket başlatma işlemini özelleştirmek için bazı alanların değerlerini de ayarlayabilirsiniz.

Desteklenen şema alanları aşağıdaki tabloda listelenmiştir.

Şema alanı Açıklama
properties Paket şablonu giriş değişkeni tanımları. Databricks, paket projesinin adı olan en az bir giriş değişkeni tanımlamanızı önerir.
properties.<variable_name> Giriş değişkeninin adı.
properties.<variable_name>.default Kullanıcının --config-file komutunun bir parçası olarak veya kendisine sorulduğunda komut satırında bundle init ile bir değer sağlamadığı durumda kullanılacak varsayılan bir değerdir.
properties.<variable_name>.description Giriş değişkeniyle ilişkili kullanıcı istemi iletisi.
properties.<variable_name>.enum özelliği için "enum": ["azure", "aws", "gcp"]gibi olası değerlerin listesi. Bu alan tanımlanmışsa Databricks CLI, kullanıcıdan bir değer seçmesini istemesi için komut satırındaki bir listede yer alan değerleri sunar.
properties.<variable_name>.order Giriş özellikleri için göreli sırayı tanımlayan bir tamsayı. Bu, komut satırında bu giriş değişkenleri için istemlerin gösterilme sırasını denetler.
properties.<variable_name>.pattern Kullanıcı girişini doğrulamak için kullanılacak regexp deseni, örneğin "pattern": "^[^ .\\\\/]{3,}$". Desteklenen regexp söz dizimi için bkz. https://github.com/google/re2/wiki/Syntax.
properties.<variable_name>.pattern_match_failure_message Kullanıcı tarafından girilen değer belirtilen desenle eşleşmiyorsa kullanıcıya görüntülenen ileti, örneğin Project name must be at least 3 characters long and cannot contain the following characters: \"\\\", \"/\", \" \" and \".\".".
properties.<variable_name>.skip_prompt_if Bu şema zaten var olan yapılandırmadan memnunsa giriş değişkenini sormayı atlayın. Bu durumda bunun yerine özelliğin varsayılan değeri kullanılır. Örneğin, mlops-stacks şablonuna bakın. Yalnızca const karşılaştırmaları desteklenir.
properties.<variable_name>.skip_prompt_if.properties.<previous_variable_name>.const <previous_variable_name> değeri skip_prompt_ifiçinde yapılandırılan sabitle eşleşiyorsa, <variable_name> istemi atlanır.
welcome_message Kullanıcıdan giriş istemeden önce gösterilecek ilk ileti.
success_message Şablon başarıyla başlatıldıktan sonra yazdırılacak ileti.
min_databricks_cli_version Bu Databricks CLI'nin şablonun ihtiyaç duyduğu en düşük semver versiyonu. CLI sürümü bu sürümden küçükse databricks bundle init başarısız olur.
version Gelecekte kullanmak üzere ayrılmıştır. Şemanın sürümü. Bu, şemanın geçerli CLI sürümüyle uyumlu olup olmadığını belirlemek için kullanılır.

Yapılandırma şablonları

Özel paket şablonu, paket projesi databricks.yml yapılandırma dosyasını oluşturmak için kullanılan paket şablonu projesindeki bir template klasöründe databricks.yml.tmpl dosyası içermelidir. Kaynaklar için yapılandırma dosyaları için şablonlar resources klasöründe oluşturulabilir. Bu şablon dosyalarını yapılandırma şablonu YAML ile doldurun.

databricks.yml ve ilişkili *_job.yml için aşağıdaki basit örnek yapılandırma şablonları paket adını ve iki hedef ortamı oluşturur ve bu şablon kullanılarak oluşturulan paketler için pakette not defterini çalıştıran bir iş tanımlar. Bu yapılandırma şablonları, paket değişiklikleri ve paket şablonu yardımcıları'den yararlanıyor.

template/{{.project_name}}/databricks.yml.tmpl:

# databricks.yml
# This is the configuration for the Databricks Asset Bundle {{.project_name}}.

bundle:
  name: {{.project_name}}

include:
  - resources/*.yml

targets:
  # The deployment targets. See https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html
  dev:
    mode: development
    default: true
    workspace:
      host: {{workspace_host}}

  prod:
    mode: production
    workspace:
      host: {{workspace_host}}
      root_path: /Shared/.bundle/prod/${bundle.name}
    {{- if not is_service_principal}}
    run_as:
      # This runs as {{user_name}} in production. Alternatively,
      # a service principal could be used here using service_principal_name
      user_name: {{user_name}}
    {{end -}}

template/{{.project_name}}/resources/{{.project_name}}_job.yml.tmpl:

# {{.project_name}}_job.yml
# The main job for {{.project_name}}

resources:
    jobs:
        {{.project_name}}_job:
        name: {{.project_name}}_job
        tasks:
            - task_key: notebook_task
            job_cluster_key: job_cluster
            notebook_task:
                notebook_path: ../src/simple_notebook.ipynb
        job_clusters:
            - job_cluster_key: job_cluster
            new_cluster:
                node_type_id: i3.xlarge
                spark_version: 13.3.x-scala2.12

Şablonu yardımcıları ve değişkenleri

Şablon yardımcıları, Databricks tarafından sağlanan ve çalışma zamanında kullanıcıya özgü bilgileri almak veya şablon altyapısıyla etkileşime geçmek için şablon dosyalarınızda kullanabileceğiniz işlevlerdir. Kendi şablon değişkenlerinizi de tanımlayabilirsiniz.

Aşağıdaki şablon yardımcıları Databricks paket şablonu projelerinde kullanılabilir. Go şablonlarını ve değişkenlerini kullanma hakkında bilgi için bkz. Go şablonları.

Yardımcı Açıklama
{{url}} https://pkg.go.dev/net/url#Parseiçin bir diğer ad. Bu, url.URLtüm yöntemlerinin kullanımına izin verir.
{{regexp}} https://pkg.go.dev/regexp#Compileiçin bir diğer ad. Bu, regexp.Regexptüm yöntemlerinin kullanımına izin verir.
{{random_int}} Yarı açık aralıkta (0,n) negatif olmayan bir sözde rastgele sayı verir.
{{uuid}} RFC 4122'de tanımlandığı gibi 128 bit (16 bayt) Evrensel Benzersiz Kimlik Belirleyicisi olan bir UUID dize olarak döndürür. Bu kimlik, şablon yürütme süresi boyunca kararlıdır ve şablon yazarları tarafından databricks.yml bundle.uuid alanını doldurmak için kullanılabilir.
{{bundle_uuid}} Paket için benzersiz bir kimlik. Bu işlevin birden çok çağrısı aynı UUID değerini döndürür.
{{pair}} Anahtar değer çifti. Bu, bir şablonun içinde kullanılacak haritalar oluşturmak için map yardımcısıyla birlikte kullanılır.
{{map}} Çiftlerin listesini harita nesnesine dönüştürür. Bu, kitaplık dizininde tanımlanan şablonlara birden çok nesne geçirmek için yararlıdır. Bir şablonu çağırmak için Go metin şablonu söz dizimi yalnızca tek bir bağımsız değişken belirtmeye izin verdiğinden, bu işlev bu sınırlamaya geçici bir çözüm olarak kullanılabilir.
Örneğin, aşağıdaki satırda {{template "my_template" (map (pair "foo" $arg1) (pair "bar" $arg2))}}, $arg1 ve $arg2my_template içinden .foo ve .barolarak ifade edilebilir.
{{smallest_node_type}} En küçük düğüm türünü döndürür.
{{path_separator}} İşletim sistemi için yol ayırıcı karakter. Bu, Unix tabanlı sistemler için / ve Windows için \'dir.
{{workspace_host}} Kullanıcının şu anda kimliğinin doğrulandığı çalışma alanının ana bilgisayar URL'si.
{{user_name}} Şablonu başlatan kullanıcının tam adı.
{{short_name}} Şablonu başlatan kullanıcının kısa adı.
{{default_catalog}} Varsayılan çalışma alanı kataloğunu döndürür. Varsayılan değer yoksa veya Unity Kataloğu etkin değilse, bu boş bir dize döndürür.
{{is_service_principal}} Geçerli kullanıcının bir hizmet temsilcisi olup olmadığı.
{{ skip <glob-pattern-relative-to-current-directory> }} Şablon altyapısının giriş glob deseni ile eşleşen tüm dosyaları ve dizinleri oluşturma işlemini atlamasına neden olur. Örneğin, mlops-stacks şablonuna bakın.

Özel şablon yardımcıları

Kendi şablon yardımcılarınızı tanımlamak için, şablon projesinin library klasöründe bir şablon dosyası oluşturun ve yardımcıları tanımlamak için Go şablon söz dizimini kullanın. Örneğin, bir library/variables.tmpl dosyasının aşağıdaki içeriği cli_version ve model_namedeğişkenlerini tanımlar. Bu şablon bir paketi başlatmak için kullanıldığında, model_name değişkeninin değeri şablon şema dosyasında tanımlanan input_project_name alanı kullanılarak oluşturulur. Bu alan değerinin değeri, bir istemden sonra kullanıcı girişidir.

{{ define `cli_version` -}}
    v0.240.0
{{- end }}

{{ define `model_name` -}}
    {{ .input_project_name }}-model
{{- end }}

Tam bir örneği görmek için mlops-stacks şablon değişkenleri dosyasına bakın.

Paket şablonunu test edin

Son olarak, şablonunuzu test etmeye özen gösterin. Örneğin, önceki bölümlerde tanımlanan şablonu kullanarak yeni bir paket başlatmak için Databricks CLI kullanın:

databricks bundle init basic-bundle-template

Komut istemi için What is your bundle project name? değerini girin, my_test_bundle yazın.

Test paketi oluşturulduktan sonra şema dosyasından gelen başarı iletisi çıkar. Klasörün içeriğini my_test_bundle incelerseniz aşağıdakileri görmeniz gerekir:

my_test_bundle
   ├── databricks.yml
   ├── resources
   │  └── my_test_bundle_job.yml
   └── src
      └── simple_notebook.ipynb

databricks.yml dosyası ve işi artık özelleştirilmiştir:

# databricks.yml
# This is the configuration for the Databricks Asset Bundle my-test-bundle.

bundle:
  name: my_test_bundle

include:
  - resources/*.yml

targets:
  # The 'dev' target, used for development purposes. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#development-mode)
  dev:
    mode: development
    default: true
    workspace:
      host: https://my-host.cloud.databricks.com

  # The 'prod' target, used for production deployment. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#production-mode)
  prod:
    mode: production
    workspace:
      host: https://my-host.cloud.databricks.com
      root_path: /Shared/.bundle/prod/${bundle.name}
    run_as:
      # This runs as someone@example.com in production. Alternatively,
      # a service principal could be used here using service_principal_name
      user_name: someone@example.com
# my_test_bundle_job.yml
# The main job for my_test_bundle

resources:
    jobs:
        my_test_bundle_job:
        name: my_test_bundle_job
        tasks:
            - task_key: notebook_task
                job_cluster_key: job_cluster
                notebook_task:
                    notebook_path: ../src/simple_notebook.ipynb
        job_clusters:
            - job_cluster_key: job_cluster
                new_cluster:
                    node_type_id: i3.xlarge
                    spark_version: 13.3.x-scala2.12

Şablonu paylaşma

Bu paket şablonunu başkalarıyla paylaşmak istiyorsanız, Git'in desteklediği ve kullanıcılarınızın erişimi olan herhangi bir sağlayıcıyla sürüm denetiminde depolayabilirsiniz. Komutu bir Git URL'si bundle init ile çalıştırmak için, dosyanın bu databricks_template_schema.json Git URL'sine göre kök konumda olduğundan emin olun.

İpucu

Dosyayı, paketin databricks_template_schema.json köküne göre farklı bir klasöre yerleştirebilirsiniz. Ardından komutun bundle init--template-dir seçeneğini kullanarak dosyayı içeren databricks_template_schema.json klasöre başvurabilirsiniz.

Sonraki adımlar

  • Databricks tarafından oluşturulan ve bakımı yapılan ek şablonlara göz atın. GitHub'daki paket örnekleri deposuna bakın.
  • MLOps Yığınlarını Databricks Varlık Paketi şablonlarıyla kullanmak için, MLOps Yığınları için Databricks Varlık Paketleri bölümüne bakın.
  • Go paketi şablon oluşturma hakkında daha fazla bilgi edinin. Go paket şablonu belgelerine bakın.