Delen via


Implementatiemodi voor Databricks Asset Bundle

In dit artikel worden de syntaxis voor implementatiemodi van Databricks Asset Bundle beschreven. Bundels maken programmatisch beheer van Azure Databricks-werkstromen mogelijk. Zie Wat zijn Databricks-assetbundels?

In CI/CD-werkstromen coden, testen, implementeren en uitvoeren ontwikkelaars doorgaans oplossingen in verschillende fasen of modi. De eenvoudigste set modi bevat bijvoorbeeld een ontwikkelingsmodus voor preproductievalidatie, gevolgd door een productiemodus voor gevalideerde producten. Databricks Asset Bundles biedt een optionele verzameling standaardgedrag dat overeenkomt met elk van deze modi. Als u dit gedrag voor een specifiek doel wilt gebruiken, stelt u een mode of configureert u presets voor een doel in de targets configuratietoewijzing in. Zie de toewijzing van bundelconfiguratiedoelen voor meer informatie.targets

Ontwikkelingsmodus

Als u uw bundel wilt implementeren in de ontwikkelingsmodus, moet u eerst de mode toewijzing toevoegen, ingesteld op development, op het beoogde doel. Dit doel met de naam dev wordt bijvoorbeeld behandeld als een ontwikkelingsdoel:

targets:
  dev:
    mode: development

Het implementeren van een doel in de ontwikkelingsmodus door de databricks bundle deploy -t <target-name> opdracht uit te voeren implementeert het volgende gedrag, dat kan worden aangepast met behulp van voorinstellingen:

  • Hiermee worden alle resources die niet zijn geïmplementeerd als bestanden of notebooks voorafgegaan door het voorvoegsel [dev ${workspace.current_user.short_name}] en tags voor elke geïmplementeerde taak en pijplijn met een dev Azure Databricks-tag.
  • Markeert alle gerelateerde geïmplementeerde Delta Live Tables-pijplijnen als development: true. Zie De ontwikkelmodus gebruiken om pijplijnupdates uit te voeren.
  • Hiermee kunt u het gebruik van --compute-id <cluster-id> gerelateerde aanroepen naar de bundle deploy opdracht inschakelen, waardoor alle bestaande clusterdefinities worden overschreven die al zijn opgegeven in het gerelateerde bundelconfiguratiebestand. In plaats van in gerelateerde aanroepen naar de bundle deploy opdracht te gebruiken--compute-id <cluster-id>, kunt u de compute_id toewijzing hier instellen, of als onderliggende toewijzing van de bundle toewijzing, naar de id van het cluster dat moet worden gebruikt.
  • Onderbreekt alle planningen en triggers voor geïmplementeerde resources, zoals taken of kwaliteitsmonitors. Maak planningen en triggers voor een afzonderlijke taak ongedaan door in te stellen schedule.pause_status op UNPAUSED.
  • Maakt gelijktijdige uitvoeringen voor alle geïmplementeerde taken mogelijk voor snellere iteratie. Schakel gelijktijdige uitvoeringen voor een afzonderlijke taak uit door in te stellen max_concurrent_runs op 1.
  • Hiermee wordt de implementatievergrendeling uitgeschakeld voor snellere iteratie. Deze vergrendeling voorkomt implementatieconflicten die waarschijnlijk niet voorkomen in de ontwikkelmodus. Schakel de vergrendeling opnieuw in door in te stellen bundle.deployment.lock.enabled op true.

Productiemodus

Als u uw bundel wilt implementeren in de productiemodus, moet u eerst de mode toewijzing toevoegen, ingesteld op production, op het beoogde doel. Dit doel met de naam prod wordt bijvoorbeeld behandeld als een productiedoel:

targets:
  prod:
    mode: production

Het implementeren van een doel in de productiemodus door de databricks bundle deploy -t <target-name> opdracht uit te voeren, implementeert het volgende gedrag:

  • Valideert of alle gerelateerde geïmplementeerde Delta Live Tables-pijplijnen zijn gemarkeerd als development: false.

  • Valideert of de huidige Git-vertakking gelijk is aan de Git-vertakking die is opgegeven in het doel. Het opgeven van een Git-vertakking in het doel is optioneel en kan als volgt worden uitgevoerd met een extra git eigenschap:

    git:
      branch: main
    

    Deze validatie kan worden overschreven door op te --force geven tijdens de implementatie.

  • Databricks raadt u aan om service-principals te gebruiken voor productie-implementaties. U kunt dit afdwingen door deze in te stellen run_as op een service-principal. Zie Service-principals beheren en Een uitvoeringsidentiteit opgeven voor een Databricks Asset Bundles-werkstroom. Als u geen service-principals gebruikt, moet u rekening houden met het volgende aanvullende gedrag:

    • Valideert of artifact_pathfile_pathroot_pathstate_path toewijzingen niet worden overschreven voor een specifieke gebruiker.
    • Valideert dat de run_as en permissions toewijzingen zijn opgegeven om te verduidelijken welke identiteiten specifieke machtigingen hebben voor implementaties.
  • In tegenstelling tot het voorgaande gedrag voor het instellen van de mode toewijzing development, staat het instellen van de mode toewijzing aan production geen bestaande clusterdefinities toe die zijn opgegeven in het gerelateerde bundelconfiguratiebestand, bijvoorbeeld met behulp van de --compute-id <cluster-id> optie of de compute_id toewijzing.

Aangepaste voorinstellingen

Databricks Asset Bundles ondersteunt configureerbare voorinstellingen voor doelen, waarmee u het gedrag voor doelen kunt aanpassen. De beschikbare voorinstellingen worden weergegeven in de volgende tabel:

Voorinstelling Beschrijving
name_prefix De tekenreeks voor het voorvoegsel die moet worden voorafgegaan door resourcenamen.
pipelines_development Of de pijplijn al dan niet in de ontwikkelingsmodus staat. Geldige waarden zijn true of false.
trigger_pause_status Een onderbrekingsstatus die moet worden toegepast op alle triggers en planningen. Geldige waarden zijn PAUSED of UNPAUSED.
jobs_max_concurrent_runs Het aantal maximaal toegestane gelijktijdige uitvoeringen voor taken.
tags Een set sleutel-waardetags die van toepassing zijn op alle resources die tags ondersteunen, waaronder taken en experimenten. Databricks Asset Bundles biedt geen ondersteuning voor tags voor de schema resource.

Notitie

Als beide mode en presets zijn ingesteld, overschrijven voorinstellingen het standaardgedrag van de modus en de instellingen van afzonderlijke resources de voorinstellingen. Als een schema bijvoorbeeld is ingesteld op UNPAUSED, maar de trigger_pause_status voorinstelling is ingesteld PAUSEDop , wordt het schema niet gebruikt.

In het volgende voorbeeld ziet u een aangepaste configuratie van vooraf ingestelde instellingen voor het doel met de naam 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