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.

Dricks

Några av exemplen i den här artikeln, liksom andra, finns i gitHub-lagringsplatsen bundle-examples.

Jobb som använder serverlös beräkning

Databricks Asset Bundles stöder jobb som körs på serverlös beräkning. 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

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}

Jobb med en SQL-notebook-fil

I följande exempelkonfiguration definieras ett jobb med en SQL-notebook-fil.

resources:
  jobs:
    job_with_sql_notebook:
      name: "Job to demonstrate using a SQL notebook with a SQL warehouse"
      tasks:
        - task_key: notebook
          notebook_task:
            notebook_path: ./select.sql
            warehouse_id: 799f096837fzzzz4

Jobb med flera hjulfiler

I följande exempelkonfiguration 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

-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