Contoh konfigurasi bundel

Artikel ini menyediakan contoh konfigurasi untuk Bundel Automasi Deklaratif (sebelumnya dikenal sebagai Fitur Bundel Aset Databricks) dan kasus penggunaan bundel umum.

Contoh bundel lengkap, yang diuraikan dalam tabel berikut, tersedia di repositori GitHub contoh bundel:

Nama bundel Deskripsi
app_with_database Bundel dengan aplikasi Databricks yang didukung oleh database OLTP Postgres
dashboard_nyc_taxi Bundel dengan dasbor AI/BI dan pekerjaan otomatis yang mengambil tangkapan layar dasbor dan mengirimkannya melalui email ke pelanggan terdaftar
database_with_catalog Bundel yang menentukan instans database OLTP dan katalog database
databricks_app Bundel yang mendefinisikan Aplikasi Databricks
kluster_pengembangan Bundel yang mendefinisikan dan menggunakan kluster pengembangan (serbaguna)
job_read_secret Bundel yang mendefinisikan cakupan rahasia dan sebuah pekerjaan dengan tugas untuk membacanya
job_with_multiple_wheels Bundel yang menentukan dan menggunakan pekerjaan dengan beberapa dependensi roda
job_with_run_job_tasks Bundel dengan beberapa pekerjaan dengan tugas menjalankan pekerjaan
job_with_sql_notebook Paket dengan tugas yang menggunakan notepad SQL
pipeline_with_schema Bundel yang menentukan skema Katalog Unity dan alur yang menggunakannya
private_wheel_packages Bundel yang menggunakan paket roda privat dari pekerjaan
python_wheel_poetry Bundel yang membangun whl dengan Puisi
serverless_job Bundel yang menggunakan komputasi tanpa server untuk menjalankan pekerjaan
bagikan_berkas_di_antarapaket Bundel yang menyertakan file yang terletak di luar direktori akar bundel.
spark_jar_task Paket yang menentukan dan menggunakan proses Spark JAR
write_from_job_to_volume (tulis_dari_pekerjaan_ke_volume) Paket yang menulis file ke volume Katalog Unity

Skenario bundel

Bagian ini berisi contoh konfigurasi yang menunjukkan penggunaan pemetaan bundel tingkat atas. Lihat Referensi konfigurasi.

Bundel yang mengunggah file JAR ke Katalog Unity

Anda dapat menentukan volume Katalog Unity sebagai jalur artefak sehingga semua artefak, seperti file JAR dan file roda, diunggah ke volume Katalog Unity. Contoh bundel berikut membangun dan mengunggah file JAR ke Katalog Unity. Untuk informasi tentang artifact_path pemetaan, lihat workspace.artifact_path. Untuk informasi tentang artifacts, lihat artefak .

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

Konfigurasi dasbor

Bagian ini berisi contoh konfigurasi dasbor. Untuk detail konfigurasi dasbor, lihat dasbor.

Katalog dasbor dan parameterisasi skema

Anda dapat menentukan satu katalog dan skema untuk himpunan data dalam dasbor saat menyebarkannya dengan Bundel Otomatisasi Deklaratif menggunakan bidang dataset_catalog dan dataset_schema dari sumber daya dasbor.

Nota

Untuk membuat parameter referensi tabel tertentu di dalam SQL, Anda dapat menggunakan fungsi .current_catalog()

Contoh konfigurasi bundel berikut menentukan variabel untuk mengatur nilai katalog dan skema untuk target dev dan prod. Ini mengasumsikan bahwa ada file nyc_taxi_trip_analysis.lvdash.json pada folder paket src.

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

Konfigurasi pekerjaan

Bagian ini berisi contoh konfigurasi pekerjaan. Untuk detail konfigurasi pekerjaan, lihat pekerjaan.

Pekerjaan yang menggunakan komputasi tanpa server

Bundel Otomatisasi Deklaratif mendukung pekerjaan yang berjalan pada komputasi tanpa server. Lihat Menjalankan Pekerjaan Lakeflow Anda dengan komputasi tanpa server untuk alur kerja. Untuk mengonfigurasi ini, Anda dapat menghilangkan pengaturan clusters untuk pekerjaan dengan tugas buku catatan, atau Anda bisa menentukan lingkungan seperti yang diperlihatkan dalam contoh di bawah ini. Untuk tugas skrip Python, roda Python, dan dbt, environment_key diperlukan untuk komputasi tanpa server. Lihat 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

Pekerjaan dengan beberapa file roda

Contoh konfigurasi berikut menentukan kumpulan yang mencakup tugas dengan beberapa file *.whl.

# 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

Pekerjaan dengan parameter

Contoh konfigurasi berikut mendefinisikan pekerjaan dengan parameter. Untuk informasi selengkapnya tentang membuat parameter pekerjaan, lihat Membuat parameter pekerjaan.

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

Parameter ini dapat ditetapkan selama runtime dengan meneruskan parameter tugas ke bundle run, misalnya:

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

Pekerjaan yang menggunakan file requirements.txt

Contoh konfigurasi berikut menentukan pekerjaan yang menggunakan file requirements.txt.

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

Pekerjaan sesuai jadwal

Contoh berikut menunjukkan konfigurasi untuk pekerjaan yang berjalan sesuai jadwal. Untuk informasi tentang jadwal dan pemicu pekerjaan, lihat Mengotomatiskan pekerjaan dengan jadwal dan pemicu.

Konfigurasi ini menentukan pekerjaan yang berjalan setiap hari pada waktu yang ditentukan:

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

Dalam konfigurasi ini, pekerjaan berjalan satu minggu setelah pekerjaan terakhir dijalankan:

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

Konfigurasi pipeline

Bagian ini berisi contoh konfigurasi alur. Untuk informasi konfigurasi alur, lihat alur.

Alur yang menggunakan komputasi tanpa server

Bundel Otomatisasi Deklaratif mendukung alur yang berjalan pada komputasi tanpa server. Untuk mengonfigurasi ini, atur alur serverless menjadi true. Contoh konfigurasi berikut mendefinisikan alur yang berjalan pada komputasi tanpa server dengan dependensi yang diinstal, dan pekerjaan yang memicu refresh alur setiap jam.

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