Dela via


Exempel på paketkonfiguration

Den här artikeln innehåller exempelkonfiguration för Databricks Asset Bundles-funktioner och vanliga användningsfall för paket.

Kompletta paketexempel, som beskrivs i följande tabell, är tillgängliga på GitHub-lagringsplatsen bundle-examples:

Paketnamn Beskrivning
dashboard_nyc_taxi Ett paket med en AI/BI-instrumentpanel och ett jobb som samlar in en ögonblicksbild av instrumentpanelen och skickar den till en prenumerant med e-post
databricks_app Ett paket som definierar en Databricks-app
Utvecklingskluster Ett paket som definierar och använder ett utvecklingskluster för allmänna ändamål.
job_read_secret Ett paket som definierar ett hemligt omfång och ett jobb med en uppgift som läser från den
uppgifter_med_flera_hjul Ett paket som definierar och använder ett jobb med flera hjulberoenden
job_with_run_job_tasks Ett paket med flera jobb med uppgifter för körningsjobb
jobb_med_sql_anteckningsbok Ett paket med ett jobb som använder en SQL Notebook-uppgift
pipeline_with_schema Ett paket som definierar ett Unity Catalog-schema och en pipeline som använder det
private_wheel_packages Ett paket som använder ett privat hjulpaket från ett jobb
python_wheel_poetry Ett paket som bygger en whl med Poetry
serverlös_jobb Ett paket som använder serverlös beräkning för att köra ett jobb
dela_filer_över_paket Ett paket som innehåller filer som finns utanför paketrotkatalogen.
spark_jar_task Ett paket som definierar och använder en Spark JAR-uppgift
skriv_från_jobb_till_volym Ett paket som skriver en fil till en Unity Catalog-volym

Paketscenarier

Det här avsnittet innehåller konfigurationsexempel som visar hur du använder paketmappningar på toppnivå. Se Konfigurationsreferens.

-paket som laddar upp en JAR-fil till Unity Catalog

Du kan ange Unity Catalog-volymer som en artefaktsökväg så att alla artefakter, till exempel JAR-filer och hjulfiler, laddas upp till Unity Catalog-volymer. I följande exempelpaket skapas och laddas en JAR-fil upp till Unity Catalog. Information om mappningen finns i artifact_path artifact_path. Information om artifactsfinns i artefakter.

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

Jobbkonfiguration

Det här avsnittet innehåller jobbkonfigurationsexempel. Information om jobbkonfiguration finns i jobbet.

Jobb som använder serverlös beräkning

Databricks Asset Bundles stöder jobb som körs på serverlös beräkning. Se Köra lakeflow-jobb med serverlös beräkning för arbetsflöden. För att konfigurera detta kan du antingen utelämna inställningen clusters för ett jobb med en notebook-uppgift, eller så kan du ange en miljö enligt exemplen nedan. För Python-skript, Python-hjul och dbt-uppgifter krävs environment_key för serverlös beräkning. Se miljö_nyckel.

# 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:
            client: '1'
            dependencies:
              - my-library

Jobb med flera hjulfiler

I följande exempelkonfigurationer definieras ett paket som innehåller ett jobb med flera *.whl filer.

# 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

Jobb som använder en requirements.txt fil

I följande exempelkonfiguration definieras ett jobb som använder en requirements.txt fil.

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

Jobb enligt ett schema

I följande exempel visas konfiguration för jobb som körs enligt ett schema. Information om jobbscheman och utlösare finns i Automatisera jobb med scheman och utlösare.

Den här konfigurationen definierar ett jobb som körs dagligen vid en angiven tidpunkt:

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

I den här konfigurationen körs jobbet en vecka efter att jobbet senast kördes:

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

Pipelinekonfiguration

Det här avsnittet innehåller exempel på pipelinekonfiguration. Information om pipelinekonfiguration finns i pipeline.

Pipeline som använder serverlös beräkning

Databricks Asset Bundles stöder pipelines som körs på serverlös beräkning. Konfigurera detta genom att ange inställningen för pipeline serverless till true. I följande exempelkonfiguration definieras en pipeline som körs på serverlös beräkning och ett jobb som utlöser en uppdatering av pipelinen varje timme.

# A pipeline that runs on serverless compute
resources:
  pipelines:
    my_pipeline:
      name: my_pipeline
      target: ${bundle.environment}
      serverless: true
      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}