Paket yapılandırma örnekleri

Bu makalede Bildirim temelli Otomasyon Paketleri (eski adıyla Databricks Varlık Paketleri) özellikleri ve yaygın paket kullanım örnekleri için örnek yapılandırma sağlanır.

Aşağıdaki tabloda özetlenen eksiksiz paket örnekleri, paket örnekleri GitHub deposunda mevcuttur:

Paket adı Açıklama
app_with_database OLTP Postgres veritabanı tarafından yedeklenen Databricks uygulaması içeren paket
app_with_genie_space Genie aracısı kullanan bir Databricks uygulamasını tanımlayan paket.
dashboard_nyc_taxi AI/BI panosu ve panonun anlık görüntüsünü yakalayan bir görev ve bu görüntüyü aboneye e-posta ile gönderen bir paket
database_with_catalog OLTP veritabanı örneğini ve veritabanı kataloğunu tanımlayan paket
databricks_app Databricks Uygulamasını tanımlayan paket
development_cluster Geliştirme (tüm amaçlı) kümeyi tanımlayan ve kullanan bir paket
genie_space_nyc_taxi samples.nyctaxi.trips tablosu hakkında soruları yanıtlayan bir Genie aracısını tanımlayan bir paket.
job_backfill_data Verileri yedeklemek için tarih parametresiyle SQL görevi çalıştıran bir işi tanımlayan paket.
job_conditional_execution Veri kalitesi denetimlerine göre koşullu görev yürütme kullanan bir işi tanımlayan paket.
job_file_arrival Bir Unity Kataloğu birimine gelen yeni dosyaları otomatik olarak işlemek için dosya varış tetikleyicileri kullanan bir işi tanımlayan paket.
job_read_secret Gizli kapsamı tanımlayan ve bu kapsamdan okuma yapan bir göreve sahip olan bir işi içeren paket
job_table_update_trigger Üreticiler Unity Kataloğu tablolarına yazdığında bir iş akışını gösteren paket, tüketiciler zaman tabanlı zamanlamalar yerine tablo güncelleştirmelerini tetikleyebilir.
job_with_multiple_wheels Birden çok tekerlek bağımlılığına sahip bir işi tanımlayan ve kullanan paket
job_with_run_job_tasks Birden çok görevi içeren ve iş görevlerini çalıştıran bir paket
job_with_sql_notebook SQL not defteri görevi kullanan bir işi içeren paket
metric_view Unity Catalog metrik görünümü oluşturan bir paket. Ölçüm görünümü kaydedildikten sonra çalışma alanınızda analistler ve BI araçları tarafından kullanılabilir hale gelir ve SQL işleviyle MEASURE() sorgulanabilir.
pipeline_with_schema Unity Kataloğu şemasını ve bunu kullanan bir işlem hattını tanımlayan paket
private_wheel_packages bir işten özel tekerlek paketi kullanan paket
python_wheel_poetry Şiir ile bir whl oluşturan paket
serverless_job İşi çalıştırmak için sunucusuz işlem kullanan paket
share_files_across_bundles Paket kök dizini dışında bulunan dosyaları içeren bir paket.
spark_jar_task Spark JAR görevini tanımlayan ve kullanan paket
target_includes farklı ortamlarda iş yapılandırmalarını yineleme olmadan düzenlemek için target_includes (veya benzer dahil etme mekanizmaları) kullanma kavramını gösteren bir paket.
vector_search_product_discovery Databricks AI Search kullanarak anlamsal ürün aramasını gösteren bir paket.
write_from_job_to_volume Unity Kataloğu birimine dosya yazan paket

Paket senaryoları

Bu bölüm, üst düzey paket eşlemelerini kullanmayı gösteren yapılandırma örnekleri içerir. Bkz. Yapılandırma referansı.

Unity Catalog'a JAR dosyası yükleyen paket

Jar dosyaları ve tekerlek dosyaları gibi tüm yapıtların Unity Kataloğu birimlerine yüklenmesi için Unity Kataloğu birimlerini yapıt yolu olarak belirtebilirsiniz. Aşağıdaki örnek paket, bir JAR dosyasını derleyip Unity Kataloğu'na yükler. Eşleme hakkında artifact_path bilgi için bkz. workspace.artifact_path. hakkında artifactsbilgi için bkz. yapıtlar.

bundle:
  name: jar-bundle

workspace:
  host: https://myworkspace.cloud.databricks.com
  artifact_path: /Volumes/main/default/my_volume

artifacts:
  my_java_code:
    path: ./sample-java
    build: 'javac PrintArgs.java && jar cvfm PrintArgs.jar META-INF/MANIFEST.MF PrintArgs.class'
    files:
      - source: ./sample-java/PrintArgs.jar

resources:
  jobs:
    jar_job:
      name: 'Spark Jar Job'
      tasks:
        - task_key: SparkJarTask
          new_cluster:
            num_workers: 1
            spark_version: '14.3.x-scala2.12'
            node_type_id: 'i3.xlarge'
          spark_jar_task:
            main_class_name: PrintArgs
          libraries:
            - jar: ./sample-java/PrintArgs.jar

Dashboard yapılandırması

Bu bölümde pano yapılandırma örnekleri yer alır. Pano yapılandırma ayrıntıları için bkz. pano.

Dashboard kataloğu ve şema parametreleştirmesi

Bildirim Otomasyon Paketleri ile dağıtırken pano kaynak dataset_catalog ve dataset_schema alanlarını kullanarak pano içindeki veri kümeleri için tek bir katalog ve şema tanımlayabilirsiniz.

Uyarı

SQL içindeki belirli tablo başvurularını parametreleştirmek için işlevini kullanabilirsiniz current_catalog() .

Aşağıdaki örnek paket yapılandırması, dev ve prod hedefleri için katalog ve şema değerlerini ayarlamak üzere değişkenleri tanımlar. Paketin klasöründe bir dosya nyc_taxi_trip_analysis.lvdash.jsonsrc olduğunu varsayar.

bundle:
  name: dashboard-bundle

variables:
  warehouse_id:
    description: Warehouse
    default: baf79a9e4ze90f02
  catalog_name:
    description: 'Catalog name'
    default: test_catalog
  schema_name:
    description: 'Schema name'
    default: ${workspace.current_user.short_name}

resources:
  dashboards:
    nyc_taxi_trip_analysis:
      display_name: 'NYC Taxi Trip Analysis'
      file_path: src/nyc_taxi_trip_analysis.lvdash.json
      warehouse_id: ${var.warehouse_id}
      dataset_catalog: ${var.catalog}
      dataset_schema: ${var.schema}

targets:
  dev:
    mode: development
    default: true
    workspace:
      host: https://myworkspace.cloud.databricks.com
    variables:
      catalog: dev_catalog
      schema: ${workspace.current_user.short_name}

  prod:
    mode: production
    workspace:
      host: https://myworkspace.cloud.databricks.com
      root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
    variables:
      catalog_name: prod_catalog
      schema_name: prod_schema
    permissions:
      - user_name: someone@example.com
        level: CAN_MANAGE

İş yapılandırması

Bu bölüm, iş yapılandırma örneklerini içerir. İş yapılandırma ayrıntıları için bkz. iş.

Sunucusuz hesaplama kullanan iş

Bildirim temelli Otomasyon Paketleri sunucusuz işlem üzerinde çalışan işleri destekler. İş akışları için bkz. Lakeflow İşlerinizi sunucusuz işlemle çalıştırma. Bunu yapılandırmak için, not defteri görevi olan bir işin clusters ayarını atlayabilir veya aşağıdaki örneklerde gösterildiği gibi bir ortam belirtebilirsiniz. Python betiği, Python tekerleği ve dbt görevleri için sunucusuz işlem için environment_key gereklidir. Bkz. environment_key.

# A serverless job (no cluster definition)
resources:
  jobs:
    serverless_job_no_cluster:
      name: serverless_job_no_cluster

      email_notifications:
        on_failure:
          - someone@example.com

      tasks:
        - task_key: notebook_task
          notebook_task:
            notebook_path: ../src/notebook.ipynb
# A serverless job (environment spec)
resources:
  jobs:
    serverless_job_environment:
      name: serverless_job_environment

      tasks:
        - task_key: task
          spark_python_task:
            python_file: ../src/main.py

          # The key that references an environment spec in a job.
          # https://docs.databricks.com/api/workspace/jobs/create#tasks-environment_key
          environment_key: default

      # A list of task execution environment specifications that can be referenced by tasks of this job.
      environments:
        - environment_key: default

          # Full documentation of this spec can be found at:
          # https://docs.databricks.com/api/workspace/jobs/create#environments-spec
          spec:
            environment_version: '2'
            dependencies:
              - my-library

Birden çok tekerlek dosyası içeren iş

Aşağıdaki örnek yapılandırmalar, birden çok *.whl dosya içeren bir iş içeren bir paketi tanımlar.

# job.yml
resources:
  jobs:
    example_job:
      name: 'Example with multiple wheels'
      tasks:
        - task_key: task

          spark_python_task:
            python_file: ../src/call_wheel.py

          libraries:
            - whl: ../my_custom_wheel1/dist/*.whl
            - whl: ../my_custom_wheel2/dist/*.whl

          new_cluster:
            node_type_id: i3.xlarge
            num_workers: 0
            spark_version: 14.3.x-scala2.12
            spark_conf:
              'spark.databricks.cluster.profile': 'singleNode'
              'spark.master': 'local[*, 4]'
            custom_tags:
              'ResourceClass': 'SingleNode'
# databricks.yml
bundle:
  name: job_with_multiple_wheels

include:
  - ./resources/job.yml

workspace:
  host: https://myworkspace.cloud.databricks.com

artifacts:
  my_custom_wheel1:
    type: whl
    build: poetry build
    path: ./my_custom_wheel1

  my_custom_wheel2:
    type: whl
    build: poetry build
    path: ./my_custom_wheel2

targets:
  dev:
    default: true
    mode: development

Parametreli iş

Aşağıdaki örnek yapılandırma, parametreleri olan bir işi tanımlar. İşleri parametreleştirme hakkında daha fazla bilgi için bkz. İşleri parametreleştirme.

resources:
  jobs:
    job_with_parameters:
      name: job_with_parameters

      tasks:
        - task_key: task_a
          spark_python_task:
            python_file: ../src/file.py
            parameters:
              - '--param1={{ job.parameters.param1 }}'
              - '--param2={{ job.parameters.param2 }}'

          new_cluster:
            node_type_id: i3.xlarge
            num_workers: 1
            spark_version: 14.3.x-scala2.12

      parameters:
        - name: param1
          default: value1
        - name: param2
          default: value1

Bu parametreler çalışma zamanında iş parametreleri'nebundle rungeçirilerek ayarlanabilir, örneğin:

databricks bundle run -- --param1=value2 --param2=value2

requirements.txt dosyası kullanan iş

Aşağıdaki örnek yapılandırma, requirements.txt dosyası kullanan bir işi tanımlar.

resources:
  jobs:
    job_with_requirements_txt:
      name: 'Example job that uses a requirements.txt file'
      tasks:
        - task_key: task
          job_cluster_key: default
          spark_python_task:
            python_file: ../src/main.py
          libraries:
            - requirements: /Workspace/${workspace.file_path}/requirements.txt

Zamanlamaya göre iş

Aşağıdaki örneklerde, bir zamanlamaya göre çalışan işler için yapılandırma gösterilmektedir. İş zamanlamaları ve tetikleyicileri hakkında bilgi için bkz. Zamanlamalar ve tetikleyicilerle işleri otomatikleştirme.

Bu yapılandırma, belirtilen bir zamanda günlük olarak çalışan bir işi tanımlar:

resources:
  jobs:
    my-notebook-job:
      name: my-notebook-job
      tasks:
        - task_key: my-notebook-task
          notebook_task:
            notebook_path: ./my-notebook.ipynb
      schedule:
        quartz_cron_expression: '0 0 8 * * ?' # daily at 8am
        timezone_id: UTC
        pause_status: UNPAUSED

Bu yapılandırmada, iş son çalıştırıldıktan bir hafta sonra çalışır:

resources:
  jobs:
    my-notebook-job:
      name: my-notebook-job
      tasks:
        - task_key: my-notebook-task
          notebook_task:
            notebook_path: ./my-notebook.ipynb
      trigger:
        pause_status: UNPAUSED
        periodic:
          interval: 1
          unit: WEEKS

Pipeline yapılandırması

Bu bölümde işlem hattı yapılandırma örnekleri yer alır. İşlem hattı yapılandırma bilgileri için bkz. işlem hattı.

Sunucusuz hesaplama kullanan işlem hattı

Bildirim temelli Otomasyon Paketleri sunucusuz işlem üzerinde çalışan işlem hatlarını destekler. Bunu yapılandırmak için işlem hattı serverless ayarını true olarak ayarlayın. Aşağıdaki örnek yapılandırma, bağımlılıkların yüklü olduğu sunucusuz işlem üzerinde çalışan bir işlem hattını ve işlem hattının saatte bir yenilenmesini tetikleyen bir işi tanımlar.

# A pipeline that runs on serverless compute
resources:
  pipelines:
    my_pipeline:
      name: my_pipeline
      target: ${bundle.environment}
      serverless: true
      environment:
        dependencies:
          - 'dist/*.whl'
      catalog: users
      libraries:
        - notebook:
            path: ../src/my_pipeline.ipynb

      configuration:
        bundle.sourcePath: /Workspace/${workspace.file_path}/src
# This defines a job to refresh a pipeline that is triggered every hour
resources:
  jobs:
    my_job:
      name: my_job

      # Run this job once an hour.
      trigger:
        periodic:
          interval: 1
          unit: HOURS

      email_notifications:
        on_failure:
          - someone@example.com

      tasks:
        - task_key: refresh_pipeline
          pipeline_task:
            pipeline_id: ${resources.pipelines.my_pipeline.id}

Sürekli çalışan boru hattı

Bir pipeline'ı sürekli çalıştırmak için, onu sürekli iş içinde görev olarak ekleyin. Aşağıdaki örnek yapılandırma, önceki örnekteki my_pipeline işlem hattını çalıştıran ve bir bakım penceresi belirleyen sürekli bir işi tanımlar; böylece platform tarafından başlatılan güncellemeler ve yeniden başlatmalar, Salı günleri Doğu Saati ile 02:00'de başlayan bir saatlik bir aralıkta başlar. Örnek ayrıca databricks_cli_version öğesini, maintenance_window destekleyen minimum sürüme ayarlar. Bkz. Deklaratif Otomasyon Paketleri ile bir bakım penceresi yapılandırma.

# databricks.yml
bundle:
  name: continuous_pipeline_bundle
  databricks_cli_version: '>= 1.16.0'
# This defines a job that runs a pipeline continuously
resources:
  jobs:
    my_continuous_job:
      name: my_continuous_job

      continuous:
        pause_status: UNPAUSED
        maintenance_window:
          start_hour: 2
          day_of_week: TUESDAY
          timezone_id: America/New_York

      email_notifications:
        on_failure:
          - someone@example.com

      tasks:
        - task_key: refresh_pipeline
          pipeline_task:
            pipeline_id: ${resources.pipelines.my_pipeline.id}