Özel paket şablonu oluşturma

Bu öğreticide, belirli bir Docker kapsayıcı görüntüsü kullanarak kümede Python göreviyle bir iş çalıştıran Bildirim temelli Otomasyon Paketleri oluşturmak için özel bir şablon oluşturacaksınız.

Özel paket şablonları hakkında bilgi için bkz. Özel paket şablonları.

Gereksinimler

  • 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

İlk olarak, kullanıcı istemi değişkenlerini tanımlayın databricks bundle init . Komut satırından:

  1. adlı dab-container-templateboş bir klasör oluşturun:

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

    cd dab-container-template
    touch databricks_template_schema.json
    
  3. Paket projesi adı için kullanıcı girişi tanımlamak üzere aşağıdaki JSON'u databricks_template_schema.json dosyasına ekleyin:

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

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

Ardından, oluşturduğunuz paketlerin klasör yapısını içeren bir template klasör oluşturun. Alt dizinlerin ve dosyaların adları Go paket şablonu söz dizimini izler.

Bu şablon, proje adı istemine göre paket proje klasörünü oluşturur:

mkdir -p "template/{{.project_name}}"

Şimdi alt dizinleri resources ve src paket dosyaları için oluşturun:

mkdir -p "template/{{.project_name}}/resources"
mkdir -p "template/{{.project_name}}/src"

YAML yapılandırma şablonları ekleme

template/{{.project_name}} klasöründe adlı databricks.yml.tmplbir dosya oluşturun:

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

Aşağıdaki YAML'yi databricks.yml.tmpl öğesine ekleyin. Bu örnek, paket şablonu yardımcılarınıkullanır.

# This is a 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 Lakeflow pipelines.
    mode: development
    default: true
    workspace:
      host: {{workspace_host}}

  # The 'prod' target, used for production deployment.
  prod:
    # For production deployments, there is only a single copy, so 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. Avoid /Shared, which is writable
    # by all workspace users.
    #
    # 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: /Workspace/Production/.bundle/${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 -}}

klasöründe adlı {{.project_name}}_job.yml.tmpltemplate/{{.project_name}}/resources başka bir YAML dosyası oluşturun. Bu yeni YAML dosyası iş tanımını içerir.

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

Belirli bir Docker kapsayıcı görüntüsü kullanılarak bir iş kümesinde çalıştırılacak python görevini içeren şablon işini açıklamak için bu dosyaya aşağıdaki YAML'yi ekleyin. Bu örnekte varsayılan Databricks temel Docker kapsayıcı görüntüsü kullanılır, ancak bunun yerine kendi özel görüntünüzü belirtebilirsiniz.

# 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/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

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

Ardından, şablondaki işle ilgili Python görev dosyasını oluşturun.

touch template/{{.project_name}}/src/task.py

Şimdi task.py'a aşağıdaki öğeleri ekleyin:

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:

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

Şablonunuzu test edin

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

databricks bundle init dab-container-template

Tip

Özel şablonunuzu doğrudan çalışma alanında diğer kullanıcıların kullanımına açmak için bir Git deposunda depolayın ve özel bir şablon klasörü yapılandırın. Kullanıcılar daha sonra CLI kullanmadan çalışma alanında bir paket oluşturduklarında bunu seçebilir. Bkz . Çalışma alanında özel şablon klasörü yapılandırma.

Sonraki adımlar

Kaynaklar

  • GitHub 'da Paket örnekleri deposu