Esempi di configurazione del bundle
Questo articolo fornisce una configurazione di esempio per le funzionalità dei bundle di asset di Databricks e i casi d'uso comuni del bundle.
Suggerimento
Alcuni esempi di questo articolo, oltre ad altri, sono disponibili nel repository GitHub bundle-examples.
Processo che usa il calcolo serverless
I bundle di asset di Databricks supportano i processi eseguiti nel calcolo serverless. Per configurare questa operazione, puoi omettere l'impostazione clusters
per un'attività di notebook oppure specificare un ambiente come illustrato negli esempi seguenti. Per gli script Python, la rotellina Python e le attività dbt, environment_key
è necessario per il calcolo serverless. Vedere 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 che usa il calcolo serverless
I bundle di asset di Databricks supportano le pipeline eseguite nel calcolo serverless. Per configurare questa impostazione, impostare l'impostazione della pipeline serverless
su true
. La configurazione di esempio seguente definisce una pipeline in esecuzione nel calcolo serverless e un processo che attiva un aggiornamento della pipeline ogni ora.
# 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}
Processo con un notebook SQL
La configurazione di esempio seguente definisce un processo con un 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
Processo con più file wheel
La configurazione di esempio seguente definisce un bundle che contiene un processo con più *.whl
file.
# 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
Processo che usa un file di requirements.txt
La configurazione di esempio seguente definisce un processo che usa un file 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
Attività su programma
Gli esempi seguenti illustrano la configurazione per i processi eseguiti in base a una pianificazione. Per informazioni sulle pianificazioni e sugli attivatori dei processi, consultare Automatizzare i processi con pianificazioni e attivatori.
Questa configurazione definisce un processo che viene eseguito ogni giorno al momento specificato:
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 questa configurazione il processo viene eseguito una settimana dopo l'ultima esecuzione del processo:
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 che carica un file JAR in Unity Catalog
È possibile specificare i volumi di Catalogo Unity come percorso di artefatto in modo che tutti gli artefatti, ad esempio file JAR e file wheel, vengano caricati nei volumi del catalogo Unity. L'esempio seguente compila e carica un file JAR in Unity Catalog. Per informazioni sul artifact_path
mapping, vedere artifact_path. Per informazioni su artifacts
, vedere artefatti.
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