Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье приведен пример конфигурации для декларативных пакетов автоматизации (ранее известных как наборы ресурсов Databricks) и распространенных вариантов использования пакета.
Полные примеры пакетов, описанные в следующей таблице, доступны в репозитории GitHub с примерами пакетов:
| Имя пакета | Описание |
|---|---|
| app_with_database | Пакет с приложением Databricks, поддерживаемым базой данных OLTP Postgres |
| dashboard_nyc_taxi | Пакет с информационной панелью ИИ/BI и заданием, которое записывает моментальный снимок панели мониторинга и отправляет его по электронной почте подписчику. |
| database_with_catalog | Пакет, определяющий экземпляр базы данных OLTP и каталог баз данных |
| databricks_app | Пакет, определяющий приложение Databricks |
| кластер разработки | Пакет, определяющий и использующий кластер разработки (все назначения) |
| job_read_secret | Пакет, определяющий область секрета и задание с задачей, считывающей из нее |
| работа_с_несколькими_колёсами | Пакет, который определяет и использует задание с несколькими зависимостями модулей |
| job_with_run_job_tasks | Пакет с несколькими заданиями с задачами выполнения заданий |
| job_with_sql_notebook | Пакет с заданием, использующим задачу в SQL-ноутбуке |
| конвейер_со_схемой | Пакет, определяющий схему каталога Unity и конвейер, использующий его |
| private_wheel_packages | Пакет, использующий пакет частного колеса из задания |
| python_wheel_poetry | Пакет, который строит whl с поэзией |
| серверлес_джоб | Пакет, использующий бессерверные вычисления для запуска задания |
| разделить_файлы_между_пакетами | Пакет, содержащий файлы, расположенные за пределами корневого каталога пакета. |
| spark_jar_task | Пакет, определяющий и использующий задачу SPARK JAR |
| запись_из_задания_в_том | Пакет, который записывает файл в том каталога Unity |
Сценарии пакетирования
В этом разделе содержатся примеры конфигурации, демонстрирующие сопоставление пакетов верхнего уровня. См. справочник по конфигурации.
пакет , который отправляет JAR-файл в каталог Unity
Тома каталога Unity можно указать в виде пути артефакта, чтобы все артефакты, такие как JAR-файлы и файлы колесика, загружались в тома каталога Unity. В следующем примере пакет создает и отправляет JAR-файл в каталог Unity. Сведения о сопоставлении artifact_path смотрите в разделе workspace.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
Конфигурация панели мониторинга
В этом разделе содержатся примеры конфигурации панели мониторинга. Сведения о конфигурации панели мониторинга см. в разделе панели мониторинга.
Каталог панелей мониторинга и параметризация схемы
Вы можете задать единый каталог и схему для наборов данных на панели мониторинга при развертывании её с использованием Declarative Automation Bundles, полей dataset_catalog и dataset_schemaресурса панели мониторинга.
Замечание
Для параметризации определенных ссылок на таблицы внутри SQL можно использовать функцию current_catalog() .
В следующем примере конфигурация пакета определяет переменные для задания значений каталога и схемы для целей dev и prod. Предполагается, что в папке пакета есть файл nyc_taxi_trip_analysis.lvdash.jsonsrc .
bundle:
name: dashboard-bundle
variables:
warehouse_id:
description: Warehouse
default: baf79a9e4ze90f02
catalog_name:
description: 'Catalog name'
default: test_catalog
schema_name:
description: 'Schema name'
default: ${workspace.current_user.short_name}
resources:
dashboards:
nyc_taxi_trip_analysis:
display_name: 'NYC Taxi Trip Analysis'
file_path: src/nyc_taxi_trip_analysis.lvdash.json
warehouse_id: ${var.warehouse_id}
dataset_catalog: ${var.catalog}
dataset_schema: ${var.schema}
targets:
dev:
mode: development
default: true
workspace:
host: https://myworkspace.cloud.databricks.com
variables:
catalog: dev_catalog
schema: ${workspace.current_user.short_name}
prod:
mode: production
workspace:
host: https://myworkspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
variables:
catalog_name: prod_catalog
schema_name: prod_schema
permissions:
- user_name: someone@example.com
level: CAN_MANAGE
Конфигурация задания
В этом разделе содержатся примеры конфигурации задания. Сведения о конфигурации задания см. в разделе "Задание".
Задание, использующее бессерверные вычисления
Декларативные пакеты автоматизации поддерживают задания, выполняемые на бессерверных вычислениях. См. статью "Запуск заданий Lakeflow с бессерверными вычислениями для рабочих процессов". Чтобы настроить это, можно либо опустить параметр 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:
environment_version: '2'
dependencies:
- my-library
Задание с несколькими wheel-файлами
В следующем примере конфигурации определяется пакет, содержащий задание с несколькими *.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
Задание с параметрами
В следующем примере конфигурация определяет задание с параметрами. Дополнительные сведения о параметризации заданий см. в разделе "Параметризация заданий".
resources:
jobs:
job_with_parameters:
name: job_with_parameters
tasks:
- task_key: task_a
spark_python_task:
python_file: ../src/file.py
parameters:
- '--param1={{ job.parameters.param1 }}'
- '--param2={{ job.parameters.param2 }}'
new_cluster:
node_type_id: i3.xlarge
num_workers: 1
spark_version: 14.3.x-scala2.12
parameters:
- name: param1
default: value1
- name: param2
default: value1
Эти параметры можно задать во время выполнения путем передачи параметровbundle runзадания, например:
databricks bundle run -- --param1=value2 --param2=value2
Задание, использующее файл 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
Конфигурация конвейера
В этом разделе содержатся примеры конфигурации конвейера. Сведения о конфигурации конвейера см. в разделе "Конвейер".
Конвейер, использующий бессерверные вычисления
Декларативные пакеты автоматизации поддерживают конвейеры, которые выполняются на бессерверных вычислениях. Чтобы настроить этот параметр, задайте для параметра конвейера serverless значение true. В следующем примере конфигурации определяется конвейер, который выполняется на бессерверных вычислениях с установленными зависимостями, а задание, которое активирует обновление конвейера каждый час.
# A pipeline that runs on serverless compute
resources:
pipelines:
my_pipeline:
name: my_pipeline
target: ${bundle.environment}
serverless: true
environment:
dependencies:
- 'dist/*.whl'
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}