Dela via


Distributionslägen för Databricks Asset Bundle

I den här artikeln beskrivs syntaxen för distributionslägena för Databricks Asset Bundle . Paket möjliggör programmatisk hantering av Azure Databricks-arbetsflöden. Se Vad är Databricks-tillgångspaket?

I CI/CD-arbetsflöden kodar, testar, distribuerar och kör utvecklare vanligtvis lösningar i olika faser eller lägen. Till exempel innehåller den enklaste uppsättningen lägen ett utvecklingsläge för validering före produktion, följt av ett produktionsläge för verifierade slutprodukt. Databricks Asset Bundles innehåller en valfri samling standardbeteenden som motsvarar var och en av dessa lägen. Om du vill använda dessa beteenden för ett specifikt mål anger du en mode eller konfigurerar presets för ett mål i targets konfigurationsmappning. Mer information om targetsfinns i paketkonfigurationsmålmappning.

Utvecklingsläge

Om du vill distribuera ditt paket i utvecklingsläge måste du först lägga till mappningen mode, inställd till development, till det avsedda målet. Det här målet med namnet dev behandlas till exempel som ett utvecklingsmål:

targets:
  dev:
    mode: development

När du distribuerar ett mål i utvecklingsläge genom att köra databricks bundle deploy -t <target-name> kommandot implementeras följande beteenden, som kan anpassas med förinställningar:

  • Förbereder alla resurser som inte distribueras som filer eller notebook-filer med prefixet [dev ${workspace.current_user.short_name}] och taggarna för varje distribuerat jobb och pipeline med en dev Azure Databricks-tagg.
  • Markerar alla relaterade distribuerade Delta Live Tables-pipelines som development: true.
  • Aktiverar användning av --compute-id <cluster-id> i relaterade anrop till bundle deploy kommandot, vilket åsidosätter alla befintliga klusterdefinitioner som redan har angetts i den relaterade paketkonfigurationsfilen. I stället för att använda --compute-id <cluster-id> i relaterade anrop till kommandot bundle deploy kan du ange compute_id mappning här, eller som en underordnad mappning av bundle mappning, till ID:t för klustret som ska användas.
  • Pausar alla scheman och utlösare för distribuerade resurser, till exempel jobb eller kvalitetsövervakare. Ta bort pausscheman och utlösare för ett enskilt jobb genom att ange schedule.pause_status till UNPAUSED.
  • Aktiverar samtidiga körningar på alla distribuerade jobb för snabbare iteration. Inaktivera samtidiga körningar för ett enskilt jobb genom att ange max_concurrent_runs till 1.
  • Inaktiverar distributionslåset för snabbare iteration. Det här låset förhindrar distributionskonflikter som sannolikt inte inträffar i utvecklingsläge. Återaktivera låset genom att ange bundle.deployment.lock.enabled till true.

Produktionsläge

Om du vill distribuera paketet i produktionsläge måste du först lägga till en mode mappning, inställd på production, till det avsedda målet. Det här målet med namnet prod behandlas till exempel som ett produktionsmål:

targets:
  prod:
    mode: production

När du distribuerar ett mål i produktionsläge genom att köra databricks bundle deploy -t <target-name> kommandot implementeras följande beteenden:

  • Verifierar att alla relaterade distribuerade Delta Live Tables-pipelines har markerats som development: false.

  • Verifierar att den aktuella Git-grenen är lika med Git-grenen som anges i målet. Det är valfritt att ange en Git-gren i målet och kan göras med ytterligare en git egenskap enligt följande:

    git:
      branch: main
    

    Den här verifieringen kan åsidosättas genom att --force ange när du distribuerar.

  • Databricks rekommenderar att du använder tjänstens huvudnamn för produktionsdistributioner. Du kan framtvinga detta genom att ange run_as tjänstens huvudnamn. Se Hantera tjänstens huvudnamn och Ange en körningsidentitet för ett Databricks Asset Bundles-arbetsflöde. Observera följande ytterligare beteenden om du inte använder tjänstens huvudnamn:

    • Verifierar att artifact_path, file_path, root_patheller state_path mappningar inte åsidosätts för en viss användare.
    • Verifierar att run_as mappningarna och permissions anges för att klargöra vilka identiteter som har specifika behörigheter för distributioner.
  • Till skillnad från föregående beteende för att ställa in mode mappningen på developmenttillåter inte inställningen mode mappning till production att åsidosätta befintliga klusterdefinitioner som anges i den relaterade paketkonfigurationsfilen, till exempel med hjälp --compute-id <cluster-id> av alternativet eller mappningen compute_id .

Anpassade förinställningar

Databricks Asset Bundles stöder konfigurerbara förinställningar för mål, vilket gör att du kan anpassa beteendet för mål. Tillgängliga förinställningar visas i följande tabell:

Förinställning beskrivning
name_prefix Prefixsträngen som ska förberedas för resursnamn.
pipelines_development Om pipelinen är i utvecklingsläge eller inte. Giltiga värden är true eller false.
trigger_pause_status En pausstatus som ska tillämpas på alla utlösare och scheman. Giltiga värden är PAUSED eller UNPAUSED.
jobs_max_concurrent_runs Antalet maximala tillåtna samtidiga körningar för jobb.
tags En uppsättning key:value-taggar som gäller för alla resurser som stöder taggar, som innehåller jobb och experiment. Databricks-tillgångspaket stöder inte taggar för resursen schema .
source_linked_deployment Reserverad för framtida användning. Om resurser som skapats under distribution pekar på källfilerna i arbetsytan istället för på deras kopior i arbetsytan.

Kommentar

Om både mode och presets anges åsidosätter förinställningar standardlägets beteende och inställningarna för enskilda resurser åsidosätter förinställningarna. Om ett schema till exempel är inställt på UNPAUSED, men förinställningen trigger_pause_status är inställd på PAUSED, är schemat inte pausat.

I följande exempel visas en konfiguration av anpassade förinställningar för målet med namnet 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