Partilhar via


Exemplos de configuração de pacote

Este artigo fornece exemplos de configuração para recursos do Databricks Asset Bundles e casos de uso comuns do bundle.

Exemplos completos de pacotes, descritos na tabela a seguir, estão disponíveis no repositório GitHub de exemplos de pacotes:

Nome do pacote Descrição
dashboard_nyc_taxi Um pacote com um painel de IA/BI e um trabalho que captura um instantâneo do painel e o envia por e-mail para um assinante
databricks_app Um pacote que define um aplicativo Databricks
cluster de desenvolvimento Um pacote que define e usa um cluster de desenvolvimento (para todos os fins)
job_read_secret Um pacote que define um escopo secreto e um trabalho com uma tarefa que lê a partir dele
trabalho_com_várias_rodas Um pacote que define e utiliza uma tarefa com várias dependências de wheel
tarefa_de_execution_job Um pacote com vários trabalhos com tarefas de execução
job_with_sql_notebook Um pacote com um trabalho que usa uma tarefa do notebook SQL
pipeline_with_schema Um pacote que define um esquema do Unity Catalog e um pipeline que o usa
private_wheel_packages Um pacote que usa um pacote de roda particular de um trabalho
python_wheel_poetry Um pacote que constrói um whl com Poesia
tarefa sem servidor Um pacote que usa computação sem servidor para executar um trabalho
partilhar_ficheiros_entre_conjuntos Um pacote que inclui arquivos localizados fora do diretório raiz do pacote.
spark_jar_task Um pacote que define e usa uma tarefa JAR do Spark
escrever_de_tarefa_para_volume Um pacote que grava um arquivo em um volume do Catálogo Unity

Cenários de agrupamento

Esta seção contém exemplos de configuração que demonstram o uso de mapeamentos de pacote de nível superior. Consulte Referência de configuração.

Bundle que carrega um arquivo JAR no Unity Catalog

Você pode especificar volumes do Catálogo Unity como um caminho de artefato para que todos os artefatos, como arquivos JAR e wheel files, sejam carregados nos volumes do Catálogo Unity. O pacote de exemplo a seguir cria e carrega um arquivo JAR no Unity Catalog. Para obter informações sobre o artifact_path mapeamento, consulte artifact_path. Para obter informações sobre artifacts, consulte artefatos.

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

Configuração do trabalho

Esta seção contém exemplos de configuração de trabalho. Para obter detalhes sobre a configuração do trabalho, consulte trabalho.

Trabalho que usa computação sem servidor

Os Databricks Asset Bundles suportam trabalhos executados em computação sem servidor. Consulte Executar seus trabalhos do Lakeflow com computação sem servidor para fluxos de trabalho. Para configurar isso, você pode omitir a configuração de clusters para um trabalho com uma tarefa de bloco de anotações ou pode especificar um ambiente, conforme mostrado nos exemplos abaixo. Para tarefas de script Python, roda Python e dbt, environment_key é necessário para computação sem servidor. Consulte 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

Trabalho com vários arquivos de roda

As configurações de exemplo a seguir definem um pacote que contém um trabalho com vários *.whl arquivos.

# 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

Trabalho que usa um arquivo requirements.txt

O exemplo de configuração a seguir define um trabalho que usa um arquivo 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

Trabalhar dentro de um cronograma

Os exemplos a seguir mostram a configuração para trabalhos executados em uma agenda. Para obter informações sobre agendas e gatilhos de trabalho, consulte Automatizando trabalhos com agendas e gatilhos.

Essa configuração define um trabalho que é executado diariamente em um horário especificado:

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

Nessa configuração, o trabalho é executado uma semana após a última execução:

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

Configuração do pipeline

Esta seção contém exemplos de configuração de pipeline. Para obter informações sobre a configuração do pipeline, consulte pipeline.

Pipeline que usa computação sem servidor

Os Databricks Asset Bundles suportam pipelines que são executados em computação sem servidor. Para configurar isto, defina o parâmetro do pipeline serverless como true. O exemplo de configuração a seguir define um pipeline que é executado em computação sem servidor e um trabalho que dispara uma atualização do pipeline a cada hora.

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