Tryby wdrażania pakietu zasobów usługi Databricks
W tym artykule opisano składnię trybów wdrażania pakietu zasobów usługi Databricks. Pakiety umożliwiają programowe zarządzanie przepływami pracy usługi Azure Databricks. Zobacz Co to są pakiety zasobów usługi Databricks?
W przepływach pracy ciągłej integracji/ciągłego wdrażania deweloperzy zazwyczaj kodować, testować, wdrażać i uruchamiać rozwiązania w różnych fazach lub trybach. Na przykład najprostszy zestaw trybów obejmuje tryb programowania na potrzeby weryfikacji przedprodukcyjnej, a następnie tryb produkcyjny dla zweryfikowanych elementów dostarczanych. Pakiety zasobów usługi Databricks udostępnia opcjonalną kolekcję domyślnych zachowań odpowiadających każdemu z tych trybów. Aby użyć tych zachowań dla określonego obiektu docelowego, ustaw obiekt docelowy mode
lub skonfiguruj presets
go w targets
mapowaniu konfiguracji. Aby uzyskać informacje na targets
temat programu , zobacz mapowanie elementów docelowych konfiguracji pakietu.
Tryb programowania
Aby wdrożyć pakiet w trybie programowania, należy najpierw dodać mode
mapowanie ustawione na development
wartość , do zamierzonego celu. Na przykład ten element docelowy o nazwie dev
jest traktowany jako docelowy programistyczne:
targets:
dev:
mode: development
Wdrożenie elementu docelowego w trybie programowania przez uruchomienie databricks bundle deploy -t <target-name>
polecenia implementuje następujące zachowania, które można dostosować przy użyciu ustawień wstępnych:
- Poprzedza wszystkie zasoby, które nie są wdrażane jako pliki lub notesy z prefiksem
[dev ${workspace.current_user.short_name}]
i tagiem każdego wdrożonego zadania i potoku za pomocądev
tagu usługi Azure Databricks. - Oznacza wszystkie powiązane potoki delty tabel na żywo jako
development: true
. Zobacz Używanie trybu programowania do uruchamiania aktualizacji potoku. - Umożliwia użycie
--compute-id <cluster-id>
polecenia w powiązanych wywołaniachbundle deploy
polecenia, które zastępuje wszystkie i wszystkie istniejące definicje klastra, które są już określone w powiązanym pliku konfiguracji pakietu. Zamiast używać--compute-id <cluster-id>
w powiązanych wywołaniachbundle deploy
polecenia, można ustawićcompute_id
mapowanie tutaj lub jako podrzędne mapowanie mapowaniabundle
na identyfikator klastra do użycia. - Wstrzymuje wszystkie harmonogramy i wyzwalacze dla wdrożonych zasobów, takich jak zadania lub monitory jakości. Usuń harmonogramy i wyzwalacze dla pojedynczego zadania, ustawiając wartość
schedule.pause_status
naUNPAUSED
. - Włącza współbieżne przebiegi we wszystkich wdrożonych zadaniach w celu szybszej iteracji. Wyłącz współbieżne uruchomienia dla pojedynczego zadania, ustawiając wartość
max_concurrent_runs
.1
- Wyłącza blokadę wdrożenia w celu szybszej iteracji. Ta blokada uniemożliwia konflikty wdrażania, które są mało prawdopodobne, aby wystąpiły w trybie deweloperskim. Włącz ponownie blokadę, ustawiając wartość
bundle.deployment.lock.enabled
true
.
Tryb produkcyjny
Aby wdrożyć pakiet w trybie produkcyjnym, należy najpierw dodać mode
mapowanie ustawione na production
, do zamierzonego celu. Na przykład ten obiekt docelowy o nazwie prod
jest traktowany jako docelowy produkt produkcyjny:
targets:
prod:
mode: production
Wdrożenie obiektu docelowego w trybie produkcyjnym przez uruchomienie databricks bundle deploy -t <target-name>
polecenia implementuje następujące zachowania:
Sprawdza, czy wszystkie powiązane potoki tabel delty na żywo są oznaczone jako
development: false
.Sprawdza, czy bieżąca gałąź Git jest równa gałęzi Git określonej w elemencie docelowym. Określenie gałęzi Git w obiekcie docelowym jest opcjonalne i można wykonać z dodatkową
git
właściwością w następujący sposób:git: branch: main
Tę walidację można zastąpić, określając
--force
podczas wdrażania.Usługa Databricks zaleca używanie jednostek usługi do wdrożeń produkcyjnych. Możesz to wymusić, ustawiając wartość
run_as
jednostki usługi. Zobacz Zarządzanie jednostkami usługi i Określanie tożsamości przebiegu dla przepływu pracy pakietów zasobów usługi Databricks. Jeśli nie używasz jednostek usługi, zwróć uwagę na następujące dodatkowe zachowania:- Sprawdza, czy
artifact_path
mapowania ,file_path
,root_path
lubstate_path
nie są zastępowane przez określonego użytkownika. - Sprawdza, czy
run_as
określono mapowania ipermissions
w celu wyjaśnienia, które tożsamości mają określone uprawnienia do wdrożeń.
- Sprawdza, czy
W przeciwieństwie do poprzedniego zachowania podczas ustawiania
mode
mapowania nadevelopment
wartość , ustawieniemode
mapowaniaproduction
na nie zezwala na zastępowanie istniejących definicji klastra określonych w powiązanym pliku konfiguracji pakietu, na przykład przy użyciu--compute-id <cluster-id>
opcji lubcompute_id
mapowania.
Niestandardowe ustawienia wstępne
Pakiety zasobów usługi Databricks obsługują konfigurowalne ustawienia wstępne obiektów docelowych, co umożliwia dostosowanie zachowań obiektów docelowych. Dostępne ustawienia wstępne są wymienione w poniższej tabeli:
Ustawień domyślnych | opis |
---|---|
name_prefix |
Ciąg prefiksu, który ma być poprzedzony nazwami zasobów. |
pipelines_development |
Określa, czy potok jest w trybie programowania. Prawidłowe wartości to true i false . |
trigger_pause_status |
Stan wstrzymania, który ma być stosowany do wszystkich wyzwalaczy i harmonogramów. Prawidłowe wartości to PAUSED i UNPAUSED . |
jobs_max_concurrent_runs |
Liczba maksymalnych dozwolonych współbieżnych uruchomień dla zadań. |
tags |
Zestaw tagów key:value, które mają zastosowanie do wszystkich zasobów, które obsługują tagi, w tym zadania i eksperymenty. Pakiety zasobów usługi Databricks nie obsługują tagów dla schema zasobu. |
Uwaga
Jeśli ustawienia i mode
presets
są ustawione, ustawienia wstępne zastępują zachowanie trybu domyślnego, a ustawienia poszczególnych zasobów zastępują ustawienia wstępne. Jeśli na przykład harmonogram jest ustawiony na UNPAUSED
wartość , ale trigger_pause_status
ustawienie wstępne jest ustawione na PAUSED
, harmonogram jest nieopłacony.
W poniższym przykładzie przedstawiono niestandardową konfigurację ustawień wstępnych dla obiektu docelowego o nazwie dev
:
targets:
dev:
presets:
name_prefix: "testing_" # prefix all resource names with testing_
pipelines_development: true # set development to true for pipelines
trigger_pause_status: PAUSED # set pause_status to PAUSED for all triggers and schedules
jobs_max_concurrent_runs: 10 # set max_concurrent runs to 10 for all jobs
tags:
department: finance