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 ontwikkeling modus voor preproductievalidatie, gevolgd door een productie modus 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 in of configureert u presets voor een doel in de targets configuratietoewijzing. Voor informatie over targets, zie toewijzing van bundelconfiguratiedoelen.

Ontwikkelingsmodus

Als u uw bundel wilt implementeren in de ontwikkelingsmodus, moet u eerst de mode-toewijzing toevoegen, ingesteld op development, aan 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 als bestanden of notebooks zijn geïmplementeerd, voorafgegaan door het voorvoegsel [dev ${workspace.current_user.short_name}] en worden alle geïmplementeerde taken en pijplijnen voorzien van een dev Azure Databricks-tag.
  • Markeert alle gerelateerde geïmplementeerde DLT-pijplijnen als development: true.
  • Hiermee kan het gebruik van --compute-id <cluster-id> in gerelateerde oproepen naar het bundle deploy commando worden ingeschakeld, die alle bestaande clusterdefinities overschrijft die al zijn gespecificeerd in het gerelateerde bundelconfiguratiebestand. In plaats van --compute-id <cluster-id> te gebruiken in gerelateerde aanroepen naar de opdracht bundle deploy, kunt u de compute_id-toewijzing hier instellen, of als onderliggende toewijzing van de bundle-toewijzing, naar de ID van het te gebruiken cluster.
  • 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, aan 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 DLT-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 --force te specificeren tijdens de implementatie.

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

    • Valideert of artifact_path, file_path, root_path, of state_path toewijzingen niet worden overschreven voor een specifieke gebruiker.
    • Valideert of de run_as- en permissions-toewijzingen zijn gespecificeerd om te verduidelijken welke identiteiten specifieke machtigingen hebben voor implementaties.
  • In tegenstelling tot het voorgaande gedrag voor het instellen van de mode toewijzing naar development, staat het instellen van de mode toewijzing naar production niet toe dat bestaande clusterdefinities worden overschreven, zoals gespecificeerd 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 voorvoegseltekenreeks die moet worden toegevoegd aan 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.
source_linked_deployment Gereserveerd voor toekomstig gebruik. Of de tijdens implementatie gemaakte bronnen verwijzen naar bronbestanden in de werkruimte in plaats van naar hun kopieën in de werkruimte.

Notitie

Als zowel mode als presets zijn ingesteld, overschrijven voorinstellingen het standaardgedrag van de modus en overschrijven instellingen van afzonderlijke resources de voorinstellingen. Als een schema bijvoorbeeld is ingesteld op UNPAUSED, maar de vooraf ingestelde trigger_pause_status op PAUSED staat, is het schema niet gepauzeerd.

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