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


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

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