Поделиться через


Примеры конфигурации пакета

В этой статье приведен пример конфигурации для декларативных пакетов автоматизации (ранее известных как наборы ресурсов 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}