Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
sv-SE: Deklarativa Automationspaket byggdes ursprungligen ovanpå Databricks Terraform-provider för att hantera distributioner. Databricks CLI version 0.279.0 och senare stöder dock två olika distributionsmotorer: terraform och direct. Direktdistributionsmotorn ger betydande fördelar och är inte beroende av Terraform.
Nya paket som skapats med Databricks CLI version 1.3.0 och senare använder som standard direktdistributionsmotorn. Paket som skapats med tidigare versioner av CLI kan migreras från Terraform-distributionsmotorn till den direkta distributionsmotorn med hjälp av migreringsstegen som beskrivs på den här sidan.
Viktigt!
Databricks rekommenderar att du migrerar till direktmotorn eftersom Terraform-distributionsmotorn snart kommer att bli inaktuell och direktdistributionsmotorn blir standard. Se Deklarativa Automation-paket kommer snart som standard att använda den direkta distributionsmotorn.
Fördelar med direktdistribution
Den nya direktdistributionsmotorn använder Databricks Go SDK och har följande fördelar:
- Snabbare distributioner: Paketdistributioner är upp till 40% snabbare.
-
Mer kraftfull och detaljerad validering och planering: Detaljerade ändringar med hjälp
bundle plan -o jsonav rapporter per fält som förklarar vad som utlöste en viss åtgärd. -
Återuppspelbara planer:
bundle deploy --plan plan.jsonkör en tidigare skapad plan, vilket säkerställer att endast godkända åtgärder når produktion och möjliggör snabbare driftsättningar eftersom planberäkningen hoppas över. - Enkel konfiguration: Problem med brandväggar, proxyservrar och anpassade providerregister undviks.
- Fler resurser: Ytterligare resurser som kataloger, externa platser, AI Search-ändpunkter och Genie-utrymmen stöds.
- Oföränderliga mappar: Tillgångar kan eventuellt distribueras till en oföränderlig, skrivskyddad mapp för manipuleringsskydd och distributionskonsekvens. Se immutable_folder.
Börja använda direktdistribution
Så här börjar du använda den nya direktdistributionsmotorn:
- För befintliga paket migrerar du dem med hjälp av
databricks bundle deployment migrate. Se Migrera ett befintligt paket. - För nya eller befintliga paket anger du
engine: directi paketkonfigurationen eller angerDATABRICKS_BUNDLE_ENGINEmiljövariabeln tilldirect. Se Distribuera ett nytt paket direkt.
Migrera ett befintligt paket
Direktdistributionsmotorn använder sin egen JSON-tillståndsfil. Schemat skiljer sig från Terraform JSON-tillståndsfilen.
Kommandotbundle deployment migrate konverterar Terrform-tillståndsfilen (terraform.tfstate) till filen för direkt distributionstillstånd (resources.json). Kommandot läser ID:n från den befintliga distributionen.
Utför en fullständig distribution med Terraform:
databricks bundle deploy -t my_targetMigrera utplaceringen:
databricks bundle deployment migrate -t my_targetNote
I Databricks CLI körs
bundle deployment migratebundle planoch stoppar migreringen om planen rapporterar några åtgärder. I detta fall, omplacera och försök migreringen igen. Om det fortfarande misslyckas kan du hoppa över plankontrollen med .--noplancheckKontrollera att migreringen lyckades. Kör
databricks bundle plan, vilket borde lyckas och rapportera inga handlingar.databricks bundle plan -t my_targetNote
Planen kan rapportera ändringar på resurser även när den lokala konfigurationen matchar den distribuerade resursen. Detta kan inträffa eftersom den tidigare Terraform-tillståndsfilen innehåller metadatafält som plattformen fyller i efter distributionen, som inte finns i paketkonfigurationen. Dessa skillnader är inte verkliga konfigurationsavvikelser och ändrar inte jobbbeteendet. Den direkta motorn synkroniserar dem på nästa
bundle deploy. Mer information om hur direktmotorn beräknar differenser finns i Beräkning av skillnader i resurstillstånd.Om verifieringen misslyckas tar du bort den nya tillståndsfilen:
rm .databricks/bundle/my_target/resources.jsonOm verifieringen lyckas distribuerar du paketet för att synkronisera tillståndsfilen till arbetsytan:
databricks bundle deploy -t my_target
Distribuera ett nytt paket direkt
Kommandot bundle migrate fungerar inte på paket som aldrig har distribuerats eftersom det inte finns någon tillståndsfil. Gör i stället något av följande:
Ange
bundle.enginei din databricks.yml:bundle: engine: directDATABRICKS_BUNDLE_ENGINEAnge miljövariabeln och distribuera:DATABRICKS_BUNDLE_ENGINE=direct databricks bundle deploy -t my_target
Om både konfigurationen och miljövariabeln har angetts har konfigurationen företräde.
Jämförelse av distributionsmotor
Den nya direktdistributionsmotorn fungerar mestadels på samma sätt som Terrform-distributionsmotorn, men det finns vissa skillnader.
Beräkning av resurstillståndsdeiff
Till skillnad från Terraform som upprätthåller ett enda resurstillstånd (en blandning av lokal konfiguration och fjärrtillstånd) behåller den nya motorn dessa separata och registrerar endast lokal konfiguration i sin tillståndsfil.
Beräkningen av resurstillståndsdiff görs i två steg:
- Den lokala paketkonfigurationen jämförs med snapshotkonfigurationen som används för den senaste distributionen. Fjärrtillståndet spelar ingen roll.
- Fjärrstatus jämförs med den snapshot-konfiguration som används för den senaste distributionen.
Resultatet är att:
-
databricks.ymlresursändringar ignoreras aldrig och utlöser alltid en uppdatering. - Resursfält som inte hanteras av implementeringen utlöser inte ett inkonsekvent resultatfel. Dessa resurser distribueras framgångsrikt av direktverktyget, men detta kan resultera i en avvikelse. De distribuerade resurserna uppdateras under nästa plan eller distribution.
Konfigurationsinställningar har tagits bort
De två motorerna hanterar inställningar som du tar bort från paketkonfigurationen på olika sätt:
- Med Terraform-motorn lämnas motsvarande värde oförändrat i plattformen om du tar bort ett set-fält från din
databricks.yml. Terraform hanterar endast fält som uttryckligen finns i konfigurationen, så ett borttaget fält behåller det värde som det hade vid tidpunkten för den senaste distributionen. - Om du tar bort ett angivet fält från direktmotorn
databricks.ymlåterställs värdet till resursens standardvärde. Eftersom direktmotorn jämför din lokala konfiguration med den tidigare ögonblicksbilden behandlas ett fält som inte längre finns som en ändring och resursen uppdateras till standardvärdet vid nästa distribution.
Om du vill spara ett värde anger du det uttryckligen i konfigurationen i stället för att förlita dig på det tidigare distribuerade värdet.
Sökning efter resursersättning
Resursersättningar är tillgängliga för att lösa resurs-ID:t, till exempel ${resources.jobs.my_job.id}. Se Ersättningar. Lösningen på resursersättningar i direktdistributionsmotorn utförs i två steg:
- Referenser som pekar på fält som finns i den lokala konfigurationen matchas med det värde som anges i den lokala konfigurationen.
- Referenser som inte finns i den lokala konfigurationen löses från fjärrtillståndet. Det här är tillståndet som hämtas med lämplig
GETbegäran för en viss resurs.
Det schema som används för att lösa en ${resource.*} ersättning finns i filen out.fields.txt. Fälten som har markerats som ALL och STATE kan användas för lokal lösning. Fälten som har markerats som ALL eller REMOTE kan användas för fjärrmatchning.
Resurskompatibilitet
Följande resurser kräver direktdistributionsmotorn och stöds inte med Terraform-distributionsmotorn:
- Kataloger i Unity Catalog
- Externa platser i Unity Catalog
- Unity-katalogens hemligheter
- Genie-utrymmen
- Instanspooler
- SLUTpunkter för AI-sökning
Dessutom är fältet lifecycle.started endast tillgängligt i direktdistributionsmotorn och endast för apps, clustersoch sql_warehouses. När den är inställd på true distribuerar den resursen i startat läge. Se livscykeln.