Aracılığıyla paylaş


Öğretici: İlk özel Databricks Varlık Paketi şablonunuzu oluşturma

Bu öğreticide, belirli bir Docker kapsayıcı görüntüsü kullanarak kümede belirli bir Python göreviyle iş çalıştıran paketler oluşturmak için özel bir Databricks Varlık Paketi şablonu oluşturacaksınız.

Başlamadan önce

Databricks CLI sürüm 0.218.0 veya üzerini yükleyin. Zaten yüklediyseniz, komut satırından çalıştırarak databricks -version sürümün 0.218.0 veya üzeri olduğunu onaylayın.

Kullanıcı istemi değişkenlerini tanımlama

Paket şablonunu dağıtmanın ilk adımı, kullanıcı istemi değişkenlerini tanımlamaktır databricks bundle init . Komut satırından:

  1. adlı dab-container-templateboş bir dizin oluşturun:

    mkdir dab-container-template
    
  2. Dizinin kökünde adlı databricks_template_schema.jsonbir dosya oluşturun:

    cd dab-container-template
    touch databricks_template_schema.json
    
  3. dosyasına aşağıdaki içeriği databricks_template_schema.json ekleyin ve dosyayı kaydedin. Her değişken, paket oluşturma sırasında bir kullanıcı istemine çevrilir.

    {
      "properties": {
        "project_name": {
          "type": "string",
          "default": "project_name",
          "description": "Project name",
          "order": 1
        }
      }
    }
    

Paket klasörü yapısını oluşturma

Ardından şablon dizininde ve srcadlı resources alt dizinler oluşturun. klasör, template oluşturduğunuz paketlerin dizin yapısını içerir. Alt dizinlerin ve dosyaların adları, kullanıcı değerlerinden türetildiğinde Go paket şablonu söz dizimini izler.

  mkdir -p "template/resources"
  mkdir -p "template/src"

YAML yapılandırma şablonları ekleme

dizininde template adlı databricks.yml.tmpl bir dosya oluşturun ve aşağıdaki YAML'yi ekleyin:

  touch template/databricks.yml.tmpl
  # This is a Databricks asset bundle definition for {{.project_name}}.
  # See https://docs.databricks.com/dev-tools/bundles/index.html for documentation.
  bundle:
    name: {{.project_name}}

  include:
    - resources/*.yml

  targets:
    # The 'dev' target, used for development purposes.
    # Whenever a developer deploys using 'dev', they get their own copy.
    dev:
      # We use 'mode: development' to make sure everything deployed to this target gets a prefix
      # like '[dev my_user_name]'. Setting this mode also disables any schedules and
      # automatic triggers for jobs and enables the 'development' mode for Delta Live Tables pipelines.
      mode: development
      default: true
      workspace:
        host: {{workspace_host}}

    # The 'prod' target, used for production deployment.
    prod:
      # For production deployments, we only have a single copy, so we override the
      # workspace.root_path default of
      # /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.target}/${bundle.name}
      # to a path that is not specific to the current user.
      #
      # By making use of 'mode: production' we enable strict checks
      # to make sure we have correctly configured this target.
      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
        # (see Databricks documentation).
        user_name: {{user_name}}
      {{end -}}

adlı {{.project_name}}_job.yml.tmpl başka bir YAML dosyası oluşturun ve dizinine template/resources yerleştirin. Bu yeni YAML dosyası, proje işi tanımlarını paket tanımının geri kalanından ayırır. Belirli bir Docker kapsayıcı görüntüsü kullanılarak bir iş kümesinde çalıştırılacak belirli bir Python görevini içeren şablon işini açıklamak için bu dosyaya aşağıdaki YAML'yi ekleyin:

  touch template/resources/{{.project_name}}_job.yml.tmpl
  # The main job for {{.project_name}}
  resources:
    jobs:
      {{.project_name}}_job:
        name: {{.project_name}}_job
        tasks:
          - task_key: python_task
            job_cluster_key: job_cluster
            spark_python_task:
              python_file: ../src/{{.project_name}}/task.py
        job_clusters:
          - job_cluster_key: job_cluster
            new_cluster:
              docker_image:
                url: databricksruntime/python:10.4-LTS
              node_type_id: i3.xlarge
              spark_version: 13.3.x-scala2.12

Bu örnekte varsayılan Databricks temel Docker kapsayıcı görüntüsünü kullanırsınız, ancak bunun yerine kendi özel görüntünüzü belirtebilirsiniz.

Yapılandırmanızda başvurulan dosyaları ekleme

Ardından, bir template/src/{{.project_name}} dizin oluşturun ve şablondaki işin başvuracağı Python görev dosyasını oluşturun:

  mkdir -p template/src/{{.project_name}}
  touch template/src/{{.project_name}}/task.py

Şimdi aşağıdakileri öğesine task.pyekleyin:

  import pyspark
  from pyspark.sql import SparkSession

  spark = SparkSession.builder.master('local[*]').appName('example').getOrCreate()

  print(f'Spark version{spark.version}')

Paket şablonu yapısını doğrulama

Paket şablonu projenizin klasör yapısını gözden geçirin. Şu şekilde görünmelidir:

  .
  ├── databricks_template_schema.json
  └── template
      ├── databricks.yml.tmpl
      ├── resources
      │   └── {{.project_name}}_job.yml.tmpl
      └── src
          └── {{.project_name}}
              └── task.py

Şablonunuzu test edin

Son olarak paket şablonunuzu test edin. Yeni özel şablonunuzu temel alan bir paket oluşturmak için komutunu kullanarak databricks bundle init yeni şablon konumunu belirtin. Paket projeleri kök klasörünüzden:

mkdir my-new-container-bundle
cd my-new-container-bundle
databricks bundle init dab-container-template

Sonraki adımlar

  • Azure Databricks çalışma alanına not defteri dağıtan ve dağıtılan not defterini Azure Databricks işi olarak çalıştıran bir paket oluşturun. Bkz . Databricks Varlık Paketlerini kullanarak Azure Databricks'te iş geliştirme.
  • Azure Databricks çalışma alanına not defteri dağıtan ve ardından dağıtılan not defterini Delta Live Tables işlem hattı olarak çalıştıran bir paket oluşturun. Bkz . Databricks Varlık Paketleri ile Delta Live Tables işlem hatları geliştirme.
  • MLOps Yığını dağıtan ve çalıştıran bir paket oluşturun. Bkz. MLOps Yığınları için Databricks Varlık Paketleri.
  • GitHub'da CI/CD (sürekli tümleştirme/sürekli dağıtım) iş akışına paket ekleyin. Bkz . Databricks Varlık Paketi ve GitHub Actions ile CI/CD iş akışı çalıştırma.

Kaynaklar