Delen via


bundle opdrachtgroep

Notitie

Deze informatie is van toepassing op Databricks CLI-versies 0.218.0 en hoger. Voer de opdracht uit databricks -vom uw versie van de Databricks CLI te vinden.

bundle Met de opdrachtgroep in de Databricks CLI kunt u azure Databricks-werkstromen zoals Azure Databricks-taken, Delta Live Tables-pijplijnen en MLOps-stacks programmatisch valideren, implementeren en uitvoeren. Bekijk wat zijn Databricks Asset Bundles?.

U voert opdrachten uit bundle door ze toe te voegen aan databricks bundle. Als u help voor de bundle opdracht wilt weergeven, voert u het volgende uit databricks bundle -h.

Een bundel maken op basis van een projectsjabloon

Als u een Databricks-assetbundel wilt maken met behulp van de standaardsjabloon Databricks Asset Bundle voor Python, voert u de bundle init opdracht als volgt uit en beantwoordt u de aanwijzingen op het scherm:

databricks bundle init

Als u een Databricks-assetbundel wilt maken met behulp van een niet-standaard Databricks Asset Bundle-sjabloon, voert u de bundle init opdracht als volgt uit:

databricks bundle init <project-template-local-path-or-url> \
--project-dir="</local/path/to/project/template/output>"

Zie ook:

Het bundelconfiguratieschema weergeven

Als u het configuratieschema van de Databricks Asset Bundle wilt weergeven, voert u de bundle schema opdracht als volgt uit:

databricks bundle schema

Als u het configuratieschema van de Databricks Asset Bundle wilt uitvoeren als een JSON-bestand, voert u de bundle schema opdracht uit en stuurt u de uitvoer om naar een JSON-bestand. U kunt bijvoorbeeld als volgt een bestand genereren met de naam bundle_config_schema.json in de huidige map:

databricks bundle schema > bundle_config_schema.json

Een bundel valideren

Als u wilt controleren of uw bundelconfiguratiebestanden syntactisch juist zijn, voert u de bundle validate opdracht uit vanuit de hoofdmap van het bundelproject:

databricks bundle validate

Deze opdracht retourneert standaard een samenvatting van de bundelidentiteit:

Name: MyBundle
Target: dev
Workspace:
  Host: https://my-host.cloud.databricks.com
  User: someone@example.com
  Path: /Users/someone@example.com/.bundle/MyBundle/dev

Validation OK!

Notitie

De bundle validate opdracht voert waarschuwingen uit als resource-eigenschappen zijn gedefinieerd in de bundelconfiguratiebestanden die niet worden gevonden in het bijbehorende objectschema.

De structuur van een bundel synchroniseren met een werkruimte

Gebruik de bundle sync opdracht om eenrichtingssynchronisatie uit te voeren van bestandswijzigingen in een lokale bestandssysteemmap naar een map binnen een externe Azure Databricks-werkruimte.

Notitie

bundle sync opdrachten kunnen geen bestandswijzigingen vanuit een map in een externe Azure Databricks-werkruimte synchroniseren, terug naar een map binnen een lokaal bestandssysteem.

databricks bundle sync opdrachten werken op dezelfde manier als databricks sync opdrachten en worden geleverd als productiviteitsgemak. Zie de synchronisatieopdrachtgroep voor informatie over het gebruik van opdrachten.

Een bundelconfiguratiebestand genereren

U kunt de bundle generate opdracht gebruiken om resourceconfiguratie te genereren voor een taak of pijplijn die al bestaat in uw Databricks-werkruimte. Met deze opdracht wordt een *.yml bestand gegenereerd voor de taak of pijplijn in de resources map van het bundelproject en worden ook notebooks gedownload waarnaar wordt verwezen in de taak- of pijplijnconfiguratie. Momenteel worden alleen taken met notebooktaken ondersteund door deze opdracht.

Belangrijk

De bundle generate opdracht wordt geleverd als handig om de resourceconfiguratie automatisch te genereren. Wanneer deze configuratie echter is opgenomen in de bundel en geïmplementeerd, wordt er een nieuwe resource gemaakt en wordt de bestaande resource niet bijgewerkt, tenzij bundle deployment bind deze voor het eerst op de resource is gebruikt.

Voer de bundle generate opdracht als volgt uit:

databricks bundle generate [job|pipeline] --existing-[job|pipeline]-id [job-id|pipeline-id]

Met de volgende opdracht wordt bijvoorbeeld een nieuw hello_job.yml bestand gegenereerd in de resources bundelprojectmap met de YAML hieronder en wordt de simple_notebook.py map gedownload naar de src projectmap.

databricks bundle generate job --existing-job-id 6565621249
# This is the contents of the resulting hello_job.yml file.
resources:
  jobs:
    6565621249:
      name: Hello Job
      format: MULTI_TASK
      tasks:
        - task_key: run_notebook
          existing_cluster_id: 0704-xxxxxx-yyyyyyy
          notebook_task:
            notebook_path: ./src/simple_notebook.py
            source: WORKSPACE
          run_if: ALL_SUCCESS
      max_concurrent_runs: 1

Bundelbronnen binden

bundle deployment bind Met de opdracht kunt u bundelgedefinieerde taken en pijplijnen koppelen aan bestaande taken en pijplijnen in de Azure Databricks-werkruimte, zodat ze worden beheerd door Databricks Asset Bundles. Als u een resource bindt, worden bestaande Azure Databricks-resources in de werkruimte bijgewerkt op basis van de configuratie die in de bundel is gedefinieerd.bundle deploy

Tip

Het is een goed idee om de bundel in de werkruimte te bevestigen voordat u binding uitvoert.

databricks bundle deployment bind [resource-key] [resource-id]

Met de volgende opdracht wordt de resource hello_job bijvoorbeeld gekoppeld aan de externe tegenhanger in de werkruimte. Met de opdracht wordt een diff uitgevoerd en kunt u de resourcebinding weigeren, maar indien bevestigd, worden eventuele updates van de taakdefinitie in de bundel toegepast op de bijbehorende externe taak wanneer de bundel de volgende implementatie uitvoert.

databricks bundle deployment bind hello_job 6565621249

Gebruik bundle deployment unbind deze optie als u de koppeling tussen de taak of pijplijn in een bundel en de externe tegenhanger in een werkruimte wilt verwijderen.

databricks bundle deployment unbind [resource-key]

Een bundel implementeren

Als u een bundel wilt implementeren in de externe werkruimte, voert u de bundle deploy opdracht uit vanuit de hoofdmap van het bundelproject. Als er geen opdrachtopties zijn opgegeven, wordt het standaarddoel zoals gedeclareerd in de bundelconfiguratiebestanden gebruikt.

databricks bundle deploy

Als u de bundel wilt implementeren op een specifiek doel, stelt u de -t optie (of --target) in, samen met de naam van het doel, zoals gedeclareerd in de bundelconfiguratiebestanden. Bijvoorbeeld voor een doel dat is gedeclareerd met de naam dev:

databricks bundle deploy -t dev

Een bundel kan worden geïmplementeerd in meerdere werkruimten, zoals ontwikkeling, fasering en productiewerkruimten. De eigenschap bepaalt in principe root_path de unieke identiteit van een bundel, die standaard wordt gebruikt ~/.bundle/${bundle.name}/${bundle.target}. Daarom bestaat de identiteit van een bundel standaard uit de identiteit van de deployer, de naam van de bundel en de doelnaam van de bundel. Als deze identiek zijn in verschillende bundels, zal de implementatie van deze bundels elkaar verstoren.

Bovendien houdt een bundelimplementatie de resources bij die worden gemaakt in de doelwerkruimte door hun id's als een status die is opgeslagen in het bestandssysteem van de werkruimte. Resourcenamen worden niet gebruikt om te correleren tussen een bundelimplementatie en een resource-exemplaar, dus:

  • Als er geen resource in de bundelconfiguratie bestaat in de doelwerkruimte, wordt deze gemaakt.
  • Als er een resource in de bundelconfiguratie bestaat in de doelwerkruimte, wordt deze bijgewerkt in de werkruimte.
  • Als een resource uit de bundelconfiguratie wordt verwijderd, wordt deze verwijderd uit de doelwerkruimte als deze eerder is geïmplementeerd.
  • De koppeling van een resource met een bundel kan alleen worden vergeten als u de bundelnaam, het bundeldoel of de werkruimte wijzigt. U kunt uitvoeren om een samenvatting met deze waarden uit te voeren bundle validate .

Een bundel uitvoeren

Gebruik de bundle run opdracht om een specifieke taak of pijplijn uit te voeren. U moet de resourcesleutel opgeven van de taak of pijplijn die is gedeclareerd in de bundelconfiguratiebestanden. Standaard wordt de omgeving die in de bundelconfiguratiebestanden is gedeclareerd, gebruikt. Als u bijvoorbeeld een taak hello_job wilt uitvoeren in de standaardomgeving, voert u de volgende opdracht uit:

databricks bundle run hello_job

Een taak uitvoeren met een sleutel hello_job binnen de context van een doel dat is gedeclareerd met de naam dev:

databricks bundle run -t dev hello_job

Als u een pijplijnvalidatieuitvoering wilt uitvoeren, gebruikt u de --validate-only optie, zoals wordt weergegeven in het volgende voorbeeld:

databricks bundle run --validate-only my_pipeline

Als u taakparameters wilt doorgeven, gebruikt u de --params optie, gevolgd door door komma's gescheiden sleutel-waardeparen, waarbij de sleutel de parameternaam is. Met de volgende opdracht wordt bijvoorbeeld de parameter ingesteld met de naam message voor HelloWorld de taak hello_job:

databricks bundle run --params message=HelloWorld hello_job

Notitie

U kunt parameters doorgeven aan taaktaken met behulp van de taaktaakopties, maar de --params optie is de aanbevolen methode voor het doorgeven van taakparameters. Er treedt een fout op als taakparameters zijn opgegeven voor een taak waarvoor geen taakparameters zijn gedefinieerd of als taakparameters zijn opgegeven voor een taak waarvoor taakparameters zijn gedefinieerd.

Als u een bestaande taakuitvoering of pijplijnupdate wilt annuleren en opnieuw wilt starten, gebruikt u de --restart volgende optie:

databricks bundle run --restart hello_job

Een bundel vernietigen

Als u taken, pijplijnen en artefacten wilt verwijderen die eerder zijn geïmplementeerd, voert u de bundle destroy opdracht uit. Met de volgende opdracht worden alle eerder geïmplementeerde taken, pijplijnen en artefacten verwijderd die zijn gedefinieerd in de bundelconfiguratiebestanden:

databricks bundle destroy

Notitie

De identiteit van een bundel bestaat uit de bundelnaam, het bundeldoel en de werkruimte. Als u een van deze hebt gewijzigd en vervolgens een bundel probeert te vernietigen voordat u implementeert, treedt er een fout op.

Standaard wordt u gevraagd om het permanent verwijderen van de eerder geïmplementeerde taken, pijplijnen en artefacten te bevestigen. Als u deze prompts wilt overslaan en automatische permanente verwijdering wilt uitvoeren, voegt u de --auto-approve optie toe aan de bundle destroy opdracht.