Prostředky Databricks Asset Bundles
Databricks Asset Bundles vám umožňuje určit informace o prostředcích Azure Databricks, které balíček používá, v mapování resources
v konfiguraci balíčku. Prohlédněte si mapování prostředků a referenční klíč k prostředkům .
Tento článek popisuje podporované typy prostředků pro sady a obsahuje podrobnosti a příklad pro každý podporovaný typ. Další příklady najdete v tématu Příklady konfigurace sady.
Tip
Pokud chcete vygenerovat YAML pro jakýkoli existující prostředek, použijte příkaz databricks bundle generate
. Viz Vygenerování konfiguračního souboru sady.
podporované prostředky
Následující tabulka uvádí podporované typy prostředků pro sady. Některé prostředky je možné vytvořit tak, že je definujete v sadě a nasadíte sadu a některé prostředky podporují odkazování pouze na existující prostředek, který se má zahrnout do sady.
Prostředky jsou definovány pomocí odpovídající Databricks REST API žádosti o vytvoření objektu, kde podporovaná pole objektu jsou vlastnosti prostředku vyjádřené ve formátu YAML. Odkazy na dokumentaci pro payloady jednotlivých prostředků jsou uvedeny v tabulce.
Doporučení
Příkaz databricks bundle validate
vrátí upozornění, pokud se v konfiguračních souborech sady nacházejí neznámé vlastnosti prostředku.
Zdroj | Vytvořit podporu | Odpovídající objekt rozhraní REST API |
---|---|---|
aplikace | ✓ | Objekt aplikace |
cluster | ✓ | objekt clusteru |
řídicí panel | objekt řídicího panelu | |
experiment | ✓ | Experimentální objekt |
úlohy | ✓ | objekt úlohy |
model (starší verze) | ✓ | Objekt modelu (starší verze) |
služební koncový bod modelu | ✓ | model obsluhující objekt koncového bodu |
potrubí | ✓ | objekt kanálu |
monitor kvality | ✓ | Objekt pro monitorování kvality |
registrovaný model (Unity Catalog) | ✓ | Zaregistrovaný modelový objekt |
schéma (katalog Unity) | ✓ | objekt schématu |
datový objem (Unity Catalog) | ✓ | objekt svazku |
aplikace
Prostředek aplikace definuje aplikaci Databricks. Informace o aplikacích Databricks najdete v tématu Co je Databricks Apps?.
Tip
Sadu můžete inicializovat pomocí aplikace Streamlit Databricks pomocí následujícího příkazu:
databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app
Pokud chcete přidat aplikaci, zadejte pole objektu definující aplikaci a také následující:
-
source_code_path
– místní cesta./app
zdrojového kódu aplikace Databricks. Toto pole je povinné. -
config
– příkazy konfigurace aplikace a proměnné prostředí. Můžete ho použít k určení různých cílů nasazení aplikací.
Příklad
Následující příklad vytvoří aplikaci s názvem my_app
, která spravuje úlohu vytvořenou balíčkem:
resources:
jobs:
# Define a job in the bundle
hello_world:
name: hello_world
tasks:
- task_key: task
spark_python_task:
python_file: ../src/main.py
environment_key: default
environments:
- environment_key: default
spec:
client: '1'
# Define an app that manages the job in the bundle
apps:
job_manager:
name: 'job_manager_app'
description: 'An app which manages a job created by this bundle'
# The location of the source code for the app
source_code_path: ../src/app
# The configuration for running the app
config:
command:
- flask
- --app
- app
- run
- --debug
env:
- name: JOB_ID
value: ${resources.jobs.hello_world.id}
# The resources in the bundle which this app has access to. This binds the resource in the app with the DABs resource.
resources:
- name: 'app-job'
job:
id: ${resources.jobs.hello_world.id}
permission: 'CAN_MANAGE_RUN'
Kompletní sadu ukázek aplikace Databricks najdete v úložišti GitHub s názvem bundle-examples.
klastr
Prostředek clusteru definuje univerzální cluster.
Příklad
Následující příklad vytvoří cluster s názvem my_cluster
a nastaví ho jako cluster pro spuštění poznámkového bloku v my_job
:
bundle:
name: clusters
resources:
clusters:
my_cluster:
num_workers: 2
node_type_id: 'i3.xlarge'
autoscale:
min_workers: 2
max_workers: 7
spark_version: '13.3.x-scala2.12'
spark_conf:
'spark.executor.memory': '2g'
jobs:
my_job:
tasks:
- task_key: test_task
notebook_task:
notebook_path: './src/my_notebook.py'
řídicí panel
Zdroj řídicího panelu umožňuje spravovat řídicí panely AI/BI v rámci jedné sady. Informace o AI/BI řídicích panelech naleznete v řídicích panelech.
Příklad
Následující příklad zahrnuje a nasazuje ukázkový dashboard NYC Taxi Trip Analysis do pracovního prostoru Databricks.
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}
Pokud k úpravě řídicího panelu použijete uživatelské rozhraní, nebudou změny provedené prostřednictvím uživatelského rozhraní použity na soubor JSON řídicího panelu v místní sadě, pokud ho explicitně neaktualizujete pomocí bundle generate
. Pomocí možnosti --watch
můžete průběžně dotazovat a načítat změny na dashboardu. Viz Vygenerování konfiguračního souboru sady.
Pokud se navíc pokusíte nasadit sadu obsahující soubor JSON řídicího panelu, který se liší od souboru JSON ve vzdáleném pracovním prostoru, dojde k chybě. Pokud chcete vynutit nasazení a přepsání řídicího panelu ve vzdáleném pracovním prostoru tím lokálním, použijte možnost --force
. Podívejte se na Nasazení sady.
experiment
Prostředek experimentu umožňuje definovat experimenty MLflow v balíčku. Informace o experimentech MLflow najdete v tématu Uspořádání trénovacích běhů pomocí experimentů MLflow.
Příklad
Následující příklad definuje experiment, který můžou zobrazit všichni uživatelé:
resources:
experiments:
experiment:
name: my_ml_experiment
permissions:
- level: CAN_READ
group_name: users
description: MLflow experiment used to track runs
úloha
Zdroje pro úlohy vám umožňují definovat úlohy a jejich příslušné úkoly ve vašem balíčku. Informace o úlohách najdete v tématu Přehled orchestrace na Databricks. Kurz, který k vytvoření úlohy používá šablonu Sady prostředků Databricks, najdete v tématu Vývoj úlohy v Azure Databricks pomocí sad prostředků Databricks.
Příklad
Následující příklad definuje úlohu s klíčem zdroje hello-job
s jedním úkolem poznámkového bloku:
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
notebook_task:
notebook_path: ./hello.py
Informace o definování úloh a přepsání nastavení úloh naleznete v tématu Přidání úkolů do úloh v sadách prostředků Databricks, Přepsání nastavení úloh v sadě prostředků Databricksa Přepsání nastavení clusteru v sadě prostředků Databricks.
model (původní)
Modelový zdroj umožňuje definovat starší modely v balíčcích. Databricks doporučuje místo toho používat modely registrované v katalogu Unity .
koncový bod pro obsluhu modelu
Prostředek model_serving_endpoint umožňuje definovat model obsluhující koncové body. Viz Správa modelů obsluhujících koncové body.
Příklad
Následující příklad definuje koncový bod pro obsluhu modelu Unity Catalog.
resources:
model_serving_endpoints:
uc_model_serving_endpoint:
name: 'uc-model-endpoint'
config:
served_entities:
- entity_name: 'myCatalog.mySchema.my-ads-model'
entity_version: '10'
workload_size: 'Small'
scale_to_zero_enabled: 'true'
traffic_config:
routes:
- served_model_name: 'my-ads-model-10'
traffic_percentage: '100'
tags:
- key: 'team'
value: 'data science'
monitor kvality (katalog Unity)
Prostředek quality_monitor umožňuje definovat monitor tabulky katalogu Unity. Informace o monitorování najdete v tématu Monitorování kvality modelu a stavu koncového bodu.
Příklad
Následující příklad definuje monitorování kvality:
resources:
quality_monitors:
my_quality_monitor:
table_name: dev.mlops_schema.predictions
output_schema_name: ${bundle.target}.mlops_schema
assets_dir: /Users/${workspace.current_user.userName}/databricks_lakehouse_monitoring
inference_log:
granularities: [1 day]
model_id_col: model_id
prediction_col: prediction
label_col: price
problem_type: PROBLEM_TYPE_REGRESSION
timestamp_col: timestamp
schedule:
quartz_cron_expression: 0 0 8 * * ? # Run Every day at 8am
timezone_id: UTC
registrovaný_model (Unity Catalog)
Registrovaný modelový prostředek umožňuje definovat modely v katalogu Unity. Informace o registrovaných modelech v Unity Catalognaleznete v Katalogu Unity v tématu Správa životního cyklu modelu.
Příklad
Následující příklad definuje registrovaný model v Katalogu Unity:
resources:
registered_models:
model:
name: my_model
catalog_name: ${bundle.target}
schema_name: mlops_schema
comment: Registered model in Unity Catalog for ${bundle.target} deployment target
grants:
- privileges:
- EXECUTE
principal: account users
potrubí
Prostředek pipeline umožňuje vytvářet DLT pipeline . Informace o kanálech najdete v tématu Co je DLT?. Kurz, který používá šablonu Sady prostředků Databricks k vytvoření kanálu, najdete v tématu Vývoj kanálů DLT pomocí sady prostředků Databricks.
Příklad
Následující příklad definuje pipeline s klíčem prostředku hello-pipeline
:
resources:
pipelines:
hello-pipeline:
name: hello-pipeline
clusters:
- label: default
num_workers: 1
development: true
continuous: false
channel: CURRENT
edition: CORE
photon: false
libraries:
- notebook:
path: ./pipeline.py
schéma (katalog Unity)
Typ prostředku schématu umožňuje definovat schémata katalogu Unity pro tabulky a další zdroje ve vašich pracovních postupech a pipelinech vytvořených jako součást balíčku. Schéma, které se liší od jiných typů prostředků, má následující omezení:
- Vlastníkem prostředku schématu je vždy uživatel, který provádí nasazení, a nelze jej změnit. Pokud je v balíčku zadán
run_as
, bude operacemi ve schématu ignorován. - Pro prostředek schématu jsou dostupná pouze pole podporovaná odpovídajícím objektem API pro vytváření schémat. Například
enable_predictive_optimization
se nepodporuje, protože je k dispozici pouze v rozhraní API aktualizace.
Příklady
Následující příklad definuje kanál s klíčem prostředku my_pipeline
, který vytvoří schéma katalogu Unity s klíčem my_schema
jako cíl:
resources:
pipelines:
my_pipeline:
name: test-pipeline-{{.unique_id}}
libraries:
- notebook:
path: ./nb.sql
development: true
catalog: main
target: ${resources.schemas.my_schema.id}
schemas:
my_schema:
name: test-schema-{{.unique_id}}
catalog_name: main
comment: This schema was created by DABs.
Sady prostředků Databricks nepodporují mapování grantů nejvyšší úrovně, takže pokud chcete nastavit granty pro schéma, definujte granty pro schéma v rámci mapování schemas
. Další informace o grantech naleznete v tématu Zobrazit, udělit a odvolat oprávnění.
Následující příklad definuje schéma katalogu Unity s granty:
resources:
schemas:
my_schema:
name: test-schema
grants:
- principal: users
privileges:
- SELECT
- principal: my_team
privileges:
- CAN_MANAGE
catalog_name: main
objem (Unity Catalog)
Typ prostředku svazků umožňuje definovat a vytvářet svazky katalogu Unity jako součást balíčku. Při nasazování sady s definovaným svazkem mějte na paměti, že:
- Na svazek nelze odkazovat v balíčku
artifact_path
, dokud neexistuje v pracovním prostoru. Proto pokud chcete k vytvoření svazku použít sady prostředků Databricks, musíte nejprve definovat svazek v sadě, poté ho nasadit, aby byl svazek vytvořen, a pak na něj odkazovat v rámciartifact_path
při následných nasazeních. - Svazky v sadě nejsou opatřeny předponou
dev_${workspace.current_user.short_name}
, když je cíl nasazení nakonfigurován pomocímode: development
. Tuto předponu ale můžete nakonfigurovat ručně. Viz Vlastní předvolby.
Příklad
Následující příklad vytvoří svazek katalogu Unity s klíčem my_volume
:
resources:
volumes:
my_volume:
catalog_name: main
name: my_volume
schema_name: my_schema
Ukázku svazku, který spouští úlohu zapisující do souboru ve svazku katalogu Unity, naleznete v úložišti bundle-examples na GitHubu.