Zasoby pakietów aktywów usługi Databricks
Pakiety zasobów usługi Databricks umożliwiają określenie informacji o zasobach usługi Azure Databricks używanych w ramach pakietu w mapowaniu resources
w ramach konfiguracji pakietu. Zobacz odwzorowanie zasobów i kluczowy odnośnik zasobów.
W tym artykule opisano obsługiwane typy zasobów dla pakietów oraz szczegółowe informacje i przykład dla każdego obsługiwanego typu. Aby uzyskać dodatkowe przykłady, zobacz przykłady konfiguracji pakietu .
Napiwek
Aby wygenerować kod YAML dla dowolnego istniejącego zasobu, użyj polecenia databricks bundle generate
. Zobacz Generowanie pliku konfiguracji pakietu.
Obsługiwane zasoby
W poniższej tabeli wymieniono obsługiwane typy zasobów dla pakietów. Niektóre zasoby można utworzyć, definiując je w pakiecie i wdrażając pakiet, a niektóre zasoby obsługują tylko odwoływanie się do istniejącego zasobu do uwzględnienia w pakiecie.
Zasoby są definiowane przy użyciu odpowiedniego interfejsu API REST usługi Databricks ładunku żądania operacji tworzenia obiektu, gdzie obsługiwane pola obiektu, wyrażone jako YAML, są obsługiwanymi właściwościami zasobu. Linki do dokumentacji ładunków danych odpowiadających poszczególnym zasobom są wymienione w tabeli.
Napiwek
Polecenie databricks bundle validate
zwraca ostrzeżenia, jeśli w plikach konfiguracji pakietu znajdują się nieznane właściwości zasobu.
Zasób | Utwórz wsparcie | Odpowiedni obiekt interfejsu API REST |
---|---|---|
aplikacja | ✓ | obiekt aplikacji |
klaster | ✓ | obiekt klastra |
deska rozdzielcza | Obiekt pulpitu nawigacyjnego | |
eksperyment | ✓ | obiekt eksperymentu |
praca | ✓ | Obiekt zadania |
model (legacy) | ✓ | model (starsza wersja) obiektu |
punkt_serwowania_modelu | ✓ | Model obsługujący obiekt punktu końcowego |
pipelina | ✓ | potokowy obiekt |
monitor_jakości | ✓ | obiekt monitora jakości |
registered_model (Unity Catalog) | ✓ | zarejestrowany obiekt modelu |
schema (Unity Catalog) | ✓ | obiekt schematu |
wolumin (Unity Catalog) | ✓ | Obiekt woluminu |
aplikacja
Zasób aplikacji definiuje aplikację Databricks. Aby uzyskać informacje o usłudze Databricks Apps, zobacz Co to jest usługa Databricks Apps?.
Napiwek
Pakiet można zainicjować za pomocą aplikacji Streamlit Databricks przy użyciu następującego polecenia:
databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app
Aby dodać aplikację, określ pola obiektu definiujące aplikację, a także następujące elementy:
-
source_code_path
— ścieżka lokalna./app
kodu źródłowego aplikacji usługi Databricks. To pole jest wymagane. -
config
— polecenia konfiguracji aplikacji i zmienne środowiskowe. Służy do określania różnych celów wdrożenia aplikacji.
Przykład
Poniższy przykład tworzy aplikację o nazwie my_app
, która zarządza zadaniem utworzonym przez pakiet:
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'
Aby sprawdzić pełny pakiet przykładowy aplikacji Databricks, zobacz repozytorium GitHub bundle-examples.
klaster
Zasób klastra definiuje klaster ogólnego przeznaczenia.
Przykład
Poniższy przykład tworzy klaster o nazwie my_cluster
i ustawia go jako klaster, który będzie używany do uruchomienia notatnika w 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'
panel sterowania
Zasób umożliwia zarządzanie dashboardami AI/BI w pakiecie. Aby uzyskać informacje na temat pulpitów nawigacyjnych AI/BI, zobacz Dashboards.
Przykład
W poniższym przykładzie przedstawiono i wdrożono przykładowy pulpit nawigacyjny NYC Taxi Trip Analysis w obszarze roboczym usługi 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}
Jeśli używasz interfejsu użytkownika do modyfikowania pulpitu nawigacyjnego, modyfikacje wprowadzone za pośrednictwem interfejsu użytkownika nie są stosowane do pliku JSON pulpitu nawigacyjnego w pakiecie lokalnym, chyba że jawnie zaktualizujesz go przy użyciu bundle generate
. Możesz użyć opcji --watch
, aby stale sondować i pobierać zmiany na pulpicie nawigacyjnym. Zobacz Generowanie pliku konfiguracji pakietu.
Ponadto w przypadku próby wdrożenia pakietu zawierającego plik JSON pulpitu nawigacyjnego, który różni się od tego w zdalnym obszarze roboczym, wystąpi błąd. Aby wymusić wdrożenie i zastąpienie pulpitu nawigacyjnego w zdalnym obszarze roboczym przy użyciu lokalnego, użyj opcji --force
. Zobacz Wdrażanie pakietu.
eksperyment
Zasób do eksperymentów umożliwia zdefiniowanie eksperymentów MLflow w ramach pakietu. Aby uzyskać informacje na temat eksperymentów MLflow, zobacz Organizowanie przebiegów trenowania za pomocą eksperymentów MLflow.
Przykład
W poniższym przykładzie zdefiniowano eksperyment, który może wyświetlać wszyscy użytkownicy:
resources:
experiments:
experiment:
name: my_ml_experiment
permissions:
- level: CAN_READ
group_name: users
description: MLflow experiment used to track runs
zadanie
Zasób pracy umożliwia zdefiniowanie prac i odpowiadających im zadań w pakiecie. Aby uzyskać informacje o pracach, zobacz Omówienie orkiestracji w Databricks. Aby zapoznać się z samouczkiem, który używa szablonu pakietów zasobów usługi Databricks do utworzenia zadania, zobacz Develop a job on Azure Databricks using Databricks Asset Bundles (Tworzenie zadania w usłudze Azure Databricks przy użyciu pakietów zasobów usługi Databricks).
Przykład
W poniższym przykładzie zdefiniowano zadanie z kluczem zasobu hello-job
z jednym zadaniem w notatniku:
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
notebook_task:
notebook_path: ./hello.py
Aby uzyskać informacje na temat definiowania zadań i zastępowania ustawień zadań, zobacz Dodawanie zadań do zadań w Pakietach Zasobów Databricks, Zastępowanie ustawień zadań w Pakietach Zasobów Databricksi Zastępowanie ustawień klastra w Pakietach Zasobów Databricks.
model (starsza wersja)
Zasób dotyczący modelu pozwala na definiowanie starszych modeli w pakietach. Usługa Databricks zaleca zamiast tego korzystanie z zarejestrowanych modeli w Katalogu Unity.
model_serving_endpoint
Zasób model_serving_endpoint umożliwia zdefiniowanie modelu obsługującego punkty końcowe. Zobacz Zarządzanie modelem obsługującym punkty końcowe.
Przykład
W poniższym przykładzie zdefiniowano punkt końcowy serwowania modelu w Katalogu Unity.
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'
quality_monitor (wykaz aparatu Unity)
Zasób quality_monitor umożliwia zdefiniowanie monitora tabeli Unity Catalog. Aby uzyskać informacje o monitorach, zobacz Monitorowanie jakości modelu i kondycji punktu końcowego.
Przykład
W poniższym przykładzie zdefiniowano monitor jakości:
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
registered_model (wykaz aparatu Unity)
Zasób zarejestrowanego modelu umożliwia definiowanie modeli w katalogu Unity. Aby uzyskać informacje na temat modeli zarejestrowanych w katalogu Unity, zobacz Zarządzanie cyklem życia modelu w katalogu Unity.
Przykład
W poniższym przykładzie zdefiniowano zarejestrowany model w 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
przewód
Zasób potoku umożliwia Ci tworzenie potoków DLT . Aby uzyskać informacje na temat potoków, zobacz sekcję Co to jest DLT?. Aby zapoznać się z samouczkiem, który korzysta z szablonu Pakietów Zasobów Databricks do tworzenia potoków, zobacz Tworzenie potoków DLT za pomocą Pakietów Zasobów Databricks.
Przykład
W poniższym przykładzie zdefiniowano potok z kluczem zasobu 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
schemat (Unity Catalog)
Typ zasobu schematu umożliwia zdefiniowanie schematów Unity Catalog dla tabel i innych zasobów w przepływach pracy i potokach tworzonych w ramach pakietu. Schemat, inny niż inne typy zasobów, ma następujące ograniczenia:
- Właściciel zasobu schematu jest zawsze użytkownikiem wdrożenia i nie można go zmienić. Jeśli
run_as
zostanie określony w pakiecie, zostanie on zignorowany przez operacje w schemacie. - Dla zasobu schematu są dostępne tylko pola obsługiwane przez odpowiedni obiekt Schemas create API. Na przykład
enable_predictive_optimization
nie jest obsługiwany, ponieważ jest dostępny tylko w aktualizacji API .
Przykłady
W poniższym przykładzie zdefiniowano potok z kluczem zasobu my_pipeline
, który tworzy schemat Unity Catalog z kluczem my_schema
jako element docelowy.
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.
Mapowanie uprawnień najwyższego poziomu nie jest obsługiwane przez pakiety zasobów usługi Databricks, więc jeśli chcesz ustawić uprawnienia dla schematu, zdefiniuj uprawnienia dla schematu w ramach mapowania schemas
. Aby uzyskać więcej informacji na temat uprawnień, zobacz Pokazywanie, przyznawanie i cofanie przywilejów.
W poniższym przykładzie zdefiniowano schemat Unity Catalog z grantami.
resources:
schemas:
my_schema:
name: test-schema
grants:
- principal: users
privileges:
- SELECT
- principal: my_team
privileges:
- CAN_MANAGE
catalog_name: main
wolumin (Unity Catalog)
Typ zasobu woluminu umożliwia definiowanie i tworzenie woluminów w Unity Catalog jako część pakietu. Podczas wdrażania pakietu z zdefiniowanym woluminem należy pamiętać, że:
- Nie można odwołać się do woluminu w
artifact_path
dla pakietu, dopóki nie będzie on istniał w obszarze roboczym. W związku z tym, jeśli chcesz użyć pakietów zasobów usługi Databricks do utworzenia woluminu, musisz najpierw zdefiniować wolumin w pakiecie, wdrożyć go w celu utworzenia woluminu, a następnie odwołać się do niego wartifact_path
w kolejnych wdrożeniach. - Woluminy w pakiecie nie są poprzedzone prefiksem
dev_${workspace.current_user.short_name}
, jeśli cel wdrożenia ma skonfigurowanymode: development
. Można jednak ręcznie skonfigurować ten prefiks. Zobacz Niestandardowe ustawienia wstępne.
Przykład
Poniższy przykład tworzy wolumin Unity Catalog o kluczu my_volume
:
resources:
volumes:
my_volume:
catalog_name: main
name: my_volume
schema_name: my_schema
Przykładowy pakiet uruchamiający zadanie, które zapisuje do pliku w woluminie Unity Catalog, można znaleźć w repozytorium GitHub bundle-examples.