Teilen über


Paketkonfigurationsbeispiele

Dieser Artikel enthält eine Beispielkonfiguration für Databricks Asset-Paketfeatures und allgemeine Paketanwendungsfälle.

Tipp

Einige der Beispiele in diesem Artikel sowie andere finden Sie im bundle-examples GitHub-Repository.

Auftrag, der serverloses Computing verwendet

Databricks-Ressourcenpakete unterstützen Aufträge, die mit serverlosem Computing ausgeführt werden. Um dies zu konfigurieren, können Sie entweder die clusters-Einstellung für einen Auftrag mit einer Notizbuchaufgabe weglassen, oder Sie können eine Umgebung angeben, wie in den folgenden Beispielen gezeigt. Für Python-Skript-, Python-Rad- und DBT-Aufgaben ist environment_key für die serverlose Berechnung erforderlich. Weitere Informationen finden Sie unter 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:
            client: "1"
            dependencies:
              - my-library

Pipeline, die serverloses Computing verwendet

Databricks-Ressourcenpakete unterstützen Pipelines, die mit serverlosem Computing ausgeführt werden. Um dies zu konfigurieren, legen Sie die Pipelineeinstellung serverless auf true fest. Die folgende Beispielkonfiguration definiert eine Pipeline, die mit serverlosem Computing ausgeführt wird, und einen Auftrag, der eine Aktualisierung der Pipeline jede Stunde auslöst.

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

Auftrag mit einem SQL-Notebook

Die folgende Beispielkonfiguration definiert einen Auftrag mit einem SQL-Notebook.

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

Auftrag mit mehreren Wheel-Dateien

Die folgende Beispielkonfiguration definiert ein Paket, das einen Auftrag mit mehreren *.whl-Dateien enthält.

# 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

Auftrag, der eine „requirements.txt“-Datei verwendet

Die folgende Beispielkonfiguration definiert einen Auftrag, der eine „requirements.txt“-Datei verwendet.

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

Tätigkeit nach Zeitplan

Die folgenden Beispiele zeigen die Konfiguration für Aufträge, die in einem Zeitplan ausgeführt werden. Informationen zu Auftrags-Zeitplänen und Triggern finden Sie unter Automatisieren von Aufträgen mit Zeitplänen und Triggern.

Diese Konfiguration definiert einen Auftrag, der täglich zu einer bestimmten Zeit ausgeführt wird:

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

In dieser Konfiguration wird der Auftrag eine Woche nach der letzten Ausführung des Auftrags ausgeführt:

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

Bundle, das eine JAR-Datei in den Unity-Katalog hochlädt

Sie können Unity Catalog-Volumes als Artefaktpfad angeben, sodass alle Artefakte, z. B. JAR-Dateien und Wheel-Dateien, in Unity Catalog-Volumes hochgeladen werden. Das folgende Beispielbundle erstellt und lädt eine JAR-Datei in den Unity-Katalog hoch. Informationen zur artifact_path-Zuordnung finden Sie unter artifact_path. Informationen zu artifacts finden Sie unter Artefakte.

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