Příklady konfigurace balíčku

Tento článek obsahuje příklad konfigurace pro deklarativní automatizační sady (dříve označované jako Balíčky prostředků Databricks) a běžné případy použití sady prostředků.

Kompletní příklady sad, které jsou popsané v následující tabulce, jsou k dispozici v úložišti GitHub s příklady sady:

Název sady Popis
app_with_database Balíček s aplikací Databricks zálohovanou databází OLTP Postgres
app_with_genie_space Sada, která definuje aplikaci Databricks, která používá agenta Genie.
dashboard_nyc_taxi Balíček s řídicím panelem AI/BI a úlohou, která zachytí snímek řídicího panelu a pošle ji odběrateli e-mailem.
database_with_catalog Sada, která definuje instanci databáze OLTP a katalog databází
databricks_app Sada, která definuje aplikaci Databricks
vývojový_klastr Sada, která definuje a používá vývojový (univerzální) klastr.
genie_space_nyc_taxi Sada, která definuje agenta Genie, který odpovídá na otázky týkající se samples.nyctaxi.trips tabulky.
job_backfill_data Sada, která definuje úlohu, která spouští úlohu SQL s parametrem data pro obnovení dat.
job_conditional_execution Sada, která definuje úlohu, která používá podmíněné spouštění úkolů na základě kontrol kvality dat.
job_file_arrival Balíček, který definuje úlohu využívající spouštěče při příchodu souborů k automatickému zpracování nových souborů po jejich příchodu do svazku v Unity Catalog.
job_read_secret Sada, která definuje tajnou oblast a úlohu zahrnující úkol, který z ní čte
job_table_update_trigger Balíček, který ukazuje workflow, v němž při zápisu producentů do tabulek Unity Catalog mohou konzumenti spouštět akce při aktualizacích tabulek namísto časově založených plánů.
práce_s_více_koly Sada, která definuje a používá úlohu s více závislostmi kol
job_with_run_job_tasks Sada s více úlohami ke spuštění pracovních úloh
úloha_se_sql_notebookem Sada s úlohou, která používá úlohu poznámkového bloku SQL
metric_view Balíček, který vytvoří zobrazení metrik Unity Catalog. Po registraci bude zobrazení metrik dostupné analytikům a nástrojům BI v celém pracovním prostoru, které můžete dotazovat pomocí MEASURE() funkce SQL.
pipeline_with_schema Sada, která definuje schéma katalogu Unity a kanál, který ho používá
soukromé_kolové_balíčky Sada, která používá balíček privátního kola z úlohy
python_wheel_poetry Sada, která vytváří whl pomocí Poetry
serverless_job Sada, která ke spuštění úlohy používá bezserverové výpočetní prostředky
sdílení_souborů_napříč_balíčky Sada obsahující soubory umístěné mimo kořenový adresář sady.
spark_jar_task Sada, která definuje a používá úlohu Spark JAR
target_includes Sada, která demonstruje koncept použití target_includes (nebo podobných mechanismů zahrnutí) k uspořádání konfigurací úloh v různých prostředích bez duplikace.
objevování produktů pomocí vektorového vyhledávání Sada, která demonstruje sémantické vyhledávání produktů pomocí služby Databricks Vector Search.
zapisovat_z úlohy_na svazek Sada, která zapisuje soubor do svazku katalogu Unity

Scénáře balíčku

Tato část obsahuje příklady konfigurace, které ukazují použití mapování sad nejvyšší úrovně. Viz referenční informace ke konfiguraci.

balíček, který nahraje soubor JAR do katalogu Unity

Svazky katalogu Unity můžete zadat jako cestu k artefaktům, aby se všechny artefakty, jako jsou soubory JAR a soubory kol, nahrály do svazků katalogu Unity. Následující příklad vytvoří a nahraje soubor JAR do katalogu Unity. Informace o artifact_path mapování najdete v tématu workspace.artifact_path. Pro informace o artifactsse podívejte na artefakty .

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

Konfigurace řídicího panelu

Tato část obsahuje příklady konfigurace řídicího panelu. Podrobnosti o konfiguraci řídicího panelu najdete na řídicím panelu.

Katalog řídicích panelů a parametrizace schématu

Při nasazování pomocí deklarativních balíčků automatizace můžete pomocí polí dataset_catalog a dataset_schema definovat jeden katalog a schéma pro datové sady v rámci prostředku řídicího panelu.

Poznámka:

Pokud chcete parametrizovat konkrétní odkazy na tabulky uvnitř SQL, můžete použít current_catalog() funkci.

Následující příklad konfigurace svazku definuje proměnné pro nastavení hodnot katalogu a schémat pro cíle dev a prod. Předpokládá se, že v složce nyc_taxi_trip_analysis.lvdash.json balíčku je soubor src.

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

Konfigurace úlohy

Tato část obsahuje příklady konfigurace úloh. Podrobnosti o konfiguraci úlohy najdete v úloze.

Úloha, která používá bezserverové výpočetní prostředky

Deklarativní balíčky automatizace podporují úlohy, které běží na bezserverových výpočetních prostředcích. Podívejte se na Spouštění úloh Lakeflow pomocí bezserverových výpočetních prostředků pro pracovní postupy. Pokud to chcete nakonfigurovat, můžete buď vynechat nastavení clusters pro úlohu s úkolem v poznámkovém bloku, nebo můžete zadat prostředí, jak je znázorněno v následujících příkladech. Pro Python skripty, Python balíčky a dbt úlohy je environment_key vyžadováno pro serverless výpočty. Podívejte se na 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

Úloha s více soubory kolečka

Následující příklad konfigurace definuje sadu, která obsahuje úlohu s více *.whl soubory.

# 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

Úloha s parametry

Následující příklad konfigurace definuje úlohu s parametry. Další informace o parametrizaci úloh naleznete v tématu Parametrizace úloh.

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

Tyto parametry lze nastavit během běhu programu předáním parametrů úlohybundle run, například:

databricks bundle run -- --param1=value2 --param2=value2

Úloha, která používá soubor requirements.txt

Následující příklad konfigurace definuje úlohu, která používá requirements.txt soubor.

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

Úloha podle plánu

Následující příklady ukazují konfiguraci úloh, které běží podle plánu. Informace o plánech a triggerech úloh najdete v tématu Automatizace úloh s plány a aktivačními událostmi.

Tato konfigurace definuje úlohu, která se spouští každý den v zadaném čase:

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

V této konfiguraci se úloha spustí jeden týden po posledním spuštění úlohy:

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

Konfigurace kanálu

Tato část obsahuje příklady konfigurace kanálu. Informace o konfiguraci kanálu najdete v tématu kanál.

Kanál, který používá bezserverové výpočetní prostředky

Deklarativní balíčky automatizace podporují kanály, které běží na bezserverových výpočetních prostředcích. Pro konfiguraci nastavte nastavení kanálu serverless na true. Následující příklad konfigurace definuje kanál, který běží na bezserverovém výpočetním prostředí s nainstalovanými závislostmi, a úlohu, která aktivuje aktualizaci kanálu každou hodinu.

# 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}