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.
Gorjeta
Alguns dos exemplos neste artigo, bem como outros, podem ser encontrados no repositório de exemplos de pacotes.
Trabalho que usa computação sem servidor
Os Databricks Asset Bundles suportam trabalhos executados em computação sem servidor. 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
Pipeline que usa computação sem servidor
Os Databricks Asset Bundles suportam pipelines que são executados em computação sem servidor. Para configurar isso, defina a configuração 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}
Trabalhar com um bloco de anotações SQL
O exemplo de configuração a seguir define um trabalho com um bloco de anotações SQL.
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
Trabalho com vários arquivos de roda
A configuração de exemplo a seguir define 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 de trabalhos e gatilhos, consulte Tipos de gatilho para tarefas do Databricks.
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
Pacote 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 arquivos de roda, sejam carregados nos volumes do Catálogo Unity. O pacote de exemplo a seguir carrega um arquivo JAR no Unity Catalog. Para obter informações sobre o artifact_path
mapeamento, consulte artifact_path.
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