Exemplos de configuração de pacote
Este artigo fornece configuração de exemplo para recursos de Pacotes de Ativos do Databricks e casos de uso comuns de pacotes.
Dica
Alguns dos exemplos neste artigo, bem como outros, podem ser encontrados no repositório de exemplos de pacote do GitHub.
Trabalho que usa computação sem servidor
Os Pacotes de Ativos do Databricks dão suporte a trabalhos executados na computação sem servidor. Para configurar isso, você pode omitir a configuração de clusters
para um trabalho com uma tarefa de notebook ou pode especificar um ambiente, conforme mostrado nos exemplos abaixo. Para script Python, Python wheel e tarefas dbt, environment_key
é necessário para computação sem servidor. Veja 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 Pacotes de Ativos do Databricks dão suporte a pipelines executados na computação sem servidor. Para definir isso, defina a configuração serverless
do pipeline como true
. A configuração de exemplo a seguir define um pipeline executado na 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}
Trabalho com um notebook SQL
A configuração de exemplo a seguir define um trabalho com um notebook 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 wheel
A configuração de exemplo a seguir define um pacote que contém um trabalho com vários arquivos *.whl
.
# 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
A configuração de exemplo 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
Trabalho em um cronograma
Os exemplos a seguir mostram a configuração para trabalhos executados em um agendamento. 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 momento 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 do trabalho:
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 Catálogo do Unity
Você pode especificar volumes do Catálogo do Unity como um caminho de artefato para que todos os artefatos, como arquivos JAR e arquivos wheel, sejam carregados em volumes do Catálogo do Unity. O pacote de exemplo a seguir compila e carrega um arquivo JAR no Catálogo do Unity. Para obter informações sobre o mapeamento artifact_path
, confira artifact_path. Para obter informações sobre artifacts
, consulte os 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