Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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}