Exemples de configuration de bundle
Cet article fournit des exemples de configuration pour les fonctionnalités de packs de ressources Databricks et les cas d’usage courants des packs.
Conseil
Certains exemples de cet article, ainsi que d’autres, sont disponibles dans le référentiel bundle-examples.
Travail qui utilise le calcul serverless
Les bundles de ressources Databricks prennent en charge les travaux qui s’exécutent sur du calcul serverless. Pour configurer cela, vous pouvez soit omettre le paramètre clusters
d’un travail, soit spécifier un environnement, comme indiqué dans les exemples ci-dessous.
# 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.
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:
- cowsay
Pipeline qui utilise le calcul serverless
Les bundles de ressources Databricks prennent en charge les pipelines qui s’exécutent sur du calcul serverless. Pour configurer cela, affectez la valeur true
au paramètre de pipeline serverless
. L’exemple de configuration suivant définit un pipeline qui s’exécute sur un calcul serverless et un travail qui déclenche une actualisation du pipeline toutes les heures.
# 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}
Travail avec un notebook SQL
L’exemple de configuration suivant définit un travail avec 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
Travail avec plusieurs fichiers wheel
L’exemple de configuration suivant définit un bundle qui contient un travail avec plusieurs fichiers *.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
Travail qui utilise un fichier requirements.txt
L’exemple de configuration suivant définit un travail qui utilise un fichier 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
Bundle qui charge un fichier JAR dans Unity Catalog
Vous pouvez spécifier des volumes Unity Catalog en tant que chemin d’accès d’artefact afin que tous les artefacts, tels que les fichiers JAR et les fichiers wheel, soient chargés vers des volumes Unity Catalog. L’exemple suivant charge un fichier JAR dans Unity Catalog. Pour plus d’informations sur le mappage artifact_path
, consultez 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