Voorbeelden van bundelconfiguratie
Dit artikel bevat een voorbeeldconfiguratie voor databricks Asset Bundles-functies en algemene gebruiksvoorbeelden voor bundels.
Tip
Enkele van de voorbeelden in dit artikel, evenals andere, vindt u in de GitHub-opslagplaats met bundelvoorbeelden.
Taak die gebruikmaakt van serverloze compute
Databricks Asset Bundles biedt ondersteuning voor taken die worden uitgevoerd op serverloze berekeningen. Als u dit wilt configureren, kunt u de clusters
-instelling voor een taak met een notebooktaak weglaten of kunt u een omgeving opgeven, zoals wordt weergegeven in de onderstaande voorbeelden. Voor Python-script-, Python-wiel- en dbt-taken is environment_key
vereist voor serverloze berekeningen. Zie 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
Pijplijn die gebruikmaakt van serverloze berekeningen
Databricks Asset Bundles biedt ondersteuning voor pijplijnen die worden uitgevoerd op serverloze berekeningen. Als u dit wilt configureren, stelt u de pijplijninstelling serverless
in op true
. In de volgende voorbeeldconfiguratie wordt een pijplijn gedefinieerd die wordt uitgevoerd op serverloze berekeningen en een taak die elk uur een vernieuwing van de pijplijn activeert.
# 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}
Taak met een SQL-notebook
De volgende voorbeeldconfiguratie definieert een taak met een SQL-notebook.
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
Taak met meerdere wielbestanden
In de volgende voorbeeldconfiguratie wordt een bundel gedefinieerd die een taak met meerdere *.whl
bestanden bevat.
# 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
Taak die gebruikmaakt van een requirements.txt-bestand
In de volgende voorbeeldconfiguratie wordt een taak gedefinieerd die gebruikmaakt van een requirements.txt-bestand.
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
Taak volgens een planning
In de volgende voorbeelden ziet u de configuratie voor taken die volgens een schema worden uitgevoerd. Zie Taken automatiseren met planningen en triggersvoor meer informatie over taakplanningen en triggers.
Deze configuratie definieert een taak die dagelijks wordt uitgevoerd op een opgegeven tijdstip:
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 deze configuratie wordt de taak één week uitgevoerd nadat de taak voor het laatst is uitgevoerd:
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
Bundel waarmee een JAR-bestand wordt geüpload naar Unity Catalog
U kunt Unity Catalog-volumes opgeven als een artefactpad, zodat alle artefacten, zoals JAR-bestanden en wielbestanden, worden geüpload naar Unity Catalog-volumes. Met de volgende voorbeeldbundel wordt een JAR-bestand geüpload naar Unity Catalog. Zie artifact_path
voor meer informatie over de toewijzing.
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