Примеры конфигурации пакета
В этой статье приведен пример конфигурации для функций пакетов ресурсов Databricks и распространенных вариантов использования пакета.
Совет
Некоторые примеры из этой статьи, как и другие, можно найти в GitHub-репозитории bundle-examples.
Задание, использующее бессерверные вычисления
Пакеты ресурсов Databricks поддерживают задания, выполняемые на бессерверных вычислениях. Чтобы настроить это, можно либо опустить параметр clusters
для задания с задачей записной книжки, либо указать среду, как показано в примерах ниже. Для сценариев Python, колесика Python и задач dbt environment_key
требуется для бессерверных вычислений. См. 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
Конвейер, использующий бессерверные вычисления
Наборы ресурсов Databricks поддерживают конвейеры, которые выполняются на бессерверных вычислениях. Чтобы настроить этот параметр, задайте для параметра конвейера serverless
значение true
. В следующем примере конфигурации определяется конвейер, который выполняется на бессерверных вычислениях и задание, которое активирует обновление конвейера каждый час.
# 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}
Задание с записной книжкой SQL
В следующем примере конфигурации определяется задание с записной книжкой 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
Задание с несколькими файлами колесика
В следующем примере конфигурации определяется пакет, содержащий задание с несколькими *.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
Задание, использующее файл requirements.txt
В следующем примере конфигурации определяется задание, использующее файл 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
Задание по расписанию
В следующих примерах показана конфигурация заданий, выполняемых по расписанию. Сведения о расписаниях заданий и триггерах см. в разделе Автоматизация заданий с расписаниями и триггерами.
Эта конфигурация определяет задание, которое выполняется ежедневно в заданное время:
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
В этой конфигурации задание выполняется через неделю после последнего запуска задания:
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
пакет , который отправляет JAR-файл в каталог Unity
Тома каталога Unity можно указать в виде пути артефакта, чтобы все артефакты, такие как JAR-файлы и файлы колесика, загружались в тома каталога Unity. В следующем примере пакет создает и отправляет JAR-файл в каталог Unity. Сведения о сопоставлении artifact_path
см. в artifact_path. Сведения о artifacts
смотрите в артефактах .
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