Een taak ontwikkelen in Azure Databricks met behulp van Databricks Asset Bundles
Databricks Asset Bundles, ook wel bekend als bundels, bevatten de artefacten die u wilt implementeren en de instellingen voor Azure Databricks-resources, zoals taken die u wilt uitvoeren en waarmee u ze programmatisch kunt valideren, implementeren en uitvoeren. Bekijk wat zijn Databricks Asset Bundles?.
In dit artikel wordt beschreven hoe u een bundel maakt om een taak programmatisch te beheren. Zie Overzicht van orkestratie op Databricks. De bundel wordt gemaakt met behulp van de standaardbundelsjabloon Databricks Asset Bundles voor Python, die bestaat uit een notebook dat is gekoppeld aan de definitie van een taak om deze uit te voeren. Vervolgens valideert, implementeert en voert u de geïmplementeerde taak uit in uw Azure Databricks-werkruimte.
Tip
Als u bestaande taken hebt die zijn gemaakt met behulp van de gebruikersinterface of API van Azure Databricks Jobs die u wilt verplaatsen naar bundels, moet u deze definiëren in de configuratiebestanden van een bundel. Databricks raadt u aan eerst een bundel te maken met behulp van de onderstaande stappen en vervolgens te controleren of de bundel werkt. Vervolgens kunt u extra taakdefinities, notebooks en andere bronnen aan de bundel toevoegen. Zie Een bestaande taakdefinitie toevoegen aan een bundel.
Vereisten
- Databricks CLI versie 0.218.0 of hoger. Voer de opdracht
databricks -v
uit om de geïnstalleerde versie van de Databricks CLI te controleren. Zie De Databricks CLI installeren of bijwerken om de Databricks CLI te installeren of bij te werken. - Voor de externe Databricks-werkruimte moeten werkruimtebestanden zijn ingeschakeld. Zie Wat zijn werkruimtebestanden?
Een bundel maken met behulp van een projectsjabloon
Maak eerst een bundel met behulp van de standaard Python-sjabloon voor Databricks Asset Bundles. Zie Databricks Asset Bundle-projectsjablonen voor meer informatie over bundelsjablonen.
Als u een bundel vanaf nul wilt maken, zie Een bundel handmatig maken.
Stap 1: Verificatie instellen
In deze stap stelt u verificatie in tussen de Databricks CLI op uw ontwikkelcomputer en uw Azure Databricks-werkruimte. In dit artikel wordt ervan uitgegaan dat u OAuth-gebruikers-naar-machine-verificatie (U2M) en een bijbehorend Azure Databricks-configuratieprofiel DEFAULT
voor verificatie wilt gebruiken.
Notitie
U2M-verificatie is geschikt voor het uitvoeren van deze stappen in realtime. Voor volledig geautomatiseerde werkstromen raadt Databricks u aan in plaats daarvan OAuth-verificatie van machine-naar-machine (M2M) te gebruiken. Zie de installatie-instructies voor M2M-verificatie in Verificatie.
Gebruik de Databricks CLI om OAuth-tokenbeheer lokaal te starten door de volgende opdracht uit te voeren voor elke doelwerkruimte.
Vervang in de volgende opdracht
door de URL van je Azure Databricks-werkruimte , bijvoorbeeld . databricks auth login --host <workspace-url>
De Databricks CLI vraagt u om de gegevens op te slaan die u hebt ingevoerd als een Azure Databricks-configuratieprofiel. Druk
Enter
om de voorgestelde profielnaam te accepteren of voer de naam van een nieuw of bestaand profiel in. Elk bestaand profiel met dezelfde naam wordt overschreven met de gegevens die u hebt ingevoerd. U kunt profielen gebruiken om snel uw verificatiecontext over te schakelen tussen meerdere werkruimten.Als u een lijst met bestaande profielen wilt ophalen, gebruikt u in een afzonderlijke terminal of opdrachtprompt de Databricks CLI om de opdracht
databricks auth profiles
uit te voeren. Als u de bestaande instellingen van een specifiek profiel wilt weergeven, voert u de opdrachtdatabricks auth env --profile <profile-name>
uit.Voltooi in uw webbrowser de instructies op het scherm om u aan te melden bij uw Azure Databricks-werkruimte.
Voer een van de volgende opdrachten uit om de huidige OAuth-tokenwaarde van een profiel en de geplande verlooptijdstempel van het token weer te geven:
databricks auth token --host <workspace-url>
databricks auth token -p <profile-name>
databricks auth token --host <workspace-url> -p <profile-name>
Als u meerdere profielen met dezelfde
--host
waarde hebt, moet u mogelijk de--host
en-p
opties opgeven om de Databricks CLI te helpen de juiste overeenkomende OAuth-tokengegevens te vinden.
Stap 2: De bundel initialiseren
Initialiseer een bundel met behulp van de standaardsjabloon voor het Python-bundelproject.
Gebruik de terminal of opdrachtprompt om over te schakelen naar een map op uw lokale ontwikkelcomputer die de gegenereerde bundel van de sjabloon bevat.
Gebruik de Databricks CLI om de
bundle init
opdracht uit te voeren:databricks bundle init
Laat de standaardwaarde van
Template to use
staan voordefault-python
door te drukken opEnter
.Laat
Unique name for this project
de standaardwaarde vanmy_project
, of typ een andere waarde en druk opEnter
. Hiermee bepaalt u de naam van de hoofdmap voor deze bundel. Deze hoofdmap wordt gemaakt in uw huidige werkmap.Selecteer
Include a stub (sample) notebook
yes
en drukEnter
op .Selecteer
Include a stub (sample) DLT pipeline
no
en drukEnter
op . Hiermee wordt de Databricks CLI geïnstrueerd om geen DLT-voorbeeldpijplijn in uw bundel te definiëren.Selecteer
Include a stub (sample) Python package
no
en drukEnter
op . Hiermee geeft u de Databricks CLI de opdracht om geen python-wielpakketbestanden of gerelateerde build-instructies aan uw bundel toe te voegen.
Stap 3: De bundel verkennen
Als u de bestanden wilt bekijken die door de sjabloon zijn gegenereerd, schakelt u over naar de hoofdmap van de zojuist gemaakte bundel. Bestanden van bijzonder belang zijn onder andere:
-
databricks.yml
: Dit bestand geeft de programmatische naam van de bundel, bevat een verwijzing naar de taakdefinitie en geeft instellingen over de doelwerkruimte op. -
resources/<project-name>_job.yml
: Dit bestand geeft de instellingen van de taak op, inclusief een standaardnotitiebloktaak. -
src/notebook.ipynb
: Dit bestand is een voorbeeldnotebook dat, wanneer het wordt uitgevoerd, eenvoudig een RDD initialiseert die de getallen 1 tot en met 10 bevat.
Voor het customiseren van taken komen de toewijzingen in een taakdeclaratie overeen met de laadgegevens van de aanvraag, uitgedrukt in YAML-indeling, van de handeling voor het creëren van taken zoals beschreven in POST /api/2.1/jobs/create in de REST API-referentie.
Tip
U kunt de instellingen voor nieuwe taakclusters in bundels definiëren, combineren en overschrijven met behulp van de technieken die worden beschreven in Clusterinstellingen overschrijven in Databricks Asset Bundles.
Stap 4: Het configuratiebestand van het projectbundel valideren
In deze stap controleert u of de bundelconfiguratie geldig is.
Gebruik vanuit de hoofdmap de Databricks CLI om de
bundle validate
opdracht als volgt uit te voeren:databricks bundle validate
Als er een samenvatting van de bundelconfiguratie wordt geretourneerd, is de validatie voltooid. Als er fouten worden geretourneerd, lost u de fouten op en herhaalt u deze stap.
Als u na deze stap wijzigingen aanbrengt in uw bundel, moet u deze stap herhalen om te controleren of uw bundelconfiguratie nog geldig is.
Stap 5: Het lokale project implementeren in de externe werkruimte
In deze stap implementeert u het lokale notebook in uw externe Azure Databricks-werkruimte en maakt u de Azure Databricks-taak in uw werkruimte.
Gebruik vanuit de hoofdmap van de bundel de Databricks CLI om de
bundle deploy
opdracht als volgt uit te voeren:databricks bundle deploy -t dev
Controleer of het lokale notebook is geïmplementeerd: klik in de zijbalk van uw Azure Databricks-werkruimte op Werkruimte.
Klik op de map Gebruikers>
<your-username>
> .bundle ><project-name>
> dev > files > src map. Het notitieblok moet zich in deze map bevinden.Controleer of de taak is gemaakt: klik in de zijbalk van uw Azure Databricks-werkruimte op Werkstromen.
Klik op het tabblad Banen op [dev
<your-username>
]<project-name>_job
.Klik op het tabblad Taken . Er moet één taak zijn: notebook_task.
Als u na deze stap wijzigingen aanbrengt in uw bundel, moet u stap 4-5 herhalen om te controleren of uw bundelconfiguratie nog geldig is en vervolgens het project opnieuw implementeert.
Stap 6: Het geïmplementeerde project uitvoeren
In deze stap activeert u vanaf de opdrachtregel een uitvoering van de Azure Databricks-taak in uw werkruimte.
Gebruik vanuit de hoofdmap de Databricks CLI om het
bundle run
commando als volgt uit te voeren, waarbij u<project-name>
vervangt door de naam van uw project uit stap 2.databricks bundle run -t dev <project-name>_job
Kopieer de waarde van
Run URL
die in uw terminal verschijnt en plak deze in uw webbrowser om uw Azure Databricks-werkruimte te openen. Een taak weergeven en uitvoeren die is gemaakt met een Databricks Asset BundleNadat de taaktaak is voltooid in uw Azure Databricks-werkruimte en een groene titelbalk wordt weergegeven, klikt u op de taaktaak om de resultaten te bekijken.
Als u na deze stap wijzigingen aanbrengt in uw bundel, moet u stap 4-6 herhalen om te controleren of uw bundelconfiguratie nog geldig is, het project opnieuw implementeert en het opnieuw geïmplementeerde project uitvoert.
Stap 7: Opschonen
In deze stap verwijdert u het geïmplementeerde notebook en de taak uit uw werkruimte.
Gebruik vanuit de hoofdmap de Databricks CLI om de
bundle destroy
opdracht als volgt uit te voeren:databricks bundle destroy -t dev
Bevestig de aanvraag voor het verwijderen van de taak: wanneer u wordt gevraagd om resources permanent te vernietigen, typt
y
en drukt u opEnter
.Bevestig de verwijderingsaanvraag voor het notitieblok: wanneer u wordt gevraagd om de eerder geïmplementeerde map en alle bestanden permanent te vernietigen, typt
y
en drukt u opEnter
.Als u de bundel ook van uw ontwikkelcomputer wilt verwijderen, kunt u nu de lokale map uit stap 2 verwijderen.
Een bestaande taakdefinitie toevoegen aan een bundel
U kunt een bestaande taak als basis gebruiken om een taak in een bundelconfiguratiebestand te definiëren. Als u een bestaande taakdefinitie wilt ophalen, kunt u deze handmatig ophalen met behulp van de gebruikersinterface of programmatisch genereren met behulp van de Databricks CLI.
Voor informatie over de taakdefinitie in bundels, zie taak.
Een bestaande taakdefinitie ophalen met behulp van de gebruikersinterface
De YAML-weergave van een bestaande taakdefinitie ophalen uit de gebruikersinterface van de Azure Databricks-werkruimte:
Klik in de zijbalk van uw Azure Databricks-werkruimte op Werkstromen.
Klik op het tabblad Taken op de koppeling Naam van uw taak.
Klik naast de knop Nu uitvoeren op het kebabmenu en klik vervolgens op Overschakelen naar code (YAML).
Voeg de YAML toe die u naar het bestand van
databricks.yml
uw bundel hebt gekopieerd of maak een configuratiebestand voor uw taak in deresources
map van uw bundelproject en verwijs ernaar vanuit uwdatabricks.yml
bestand. Zie (/dev-tools/bundles/settings.md#resources).Download en voeg python-bestanden en notebooks toe waarnaar in de bestaande taak wordt verwezen naar de projectbron van de bundel. Bundelartefacten bevinden zich meestal in de
src
map in een bundel.Tip
U kunt een bestaand notebook vanuit een Azure Databricks-werkruimte exporteren naar het
.ipynb
-formaat door in de gebruikersinterface van Azure Databricks op Bestand > Exporteren > IPython Notebook te klikken.Nadat u uw notebooks, Python-bestanden en andere artefacten aan de bundel hebt toegevoegd, moet u ervoor zorgen dat uw taakdefinitie ernaar verwijst. Bijvoorbeeld voor een notitieblok met de naam
hello.ipynb
die zich in desrc
map van de bundel bevindt:resources: jobs: hello-job: name: hello-job tasks: - task_key: hello-task notebook_task: notebook_path: ../src/hello.ipynb
Een bestaande taakdefinitie genereren met behulp van de Databricks CLI
De bundelconfiguratie voor een bestaande taak programmatisch genereren:
Haal de ID van de bestaande taak op uit het deelvenster Taakdetails voor de taak in de Taken-UI, of gebruik de Databricks CLI-opdracht
databricks jobs list
.Voer de
bundle generate job
Opdracht Databricks CLI uit en stel de taak-id in:databricks bundle generate job --existing-job-id 6565621249
Met deze opdracht maakt u een bundelconfiguratiebestand voor de taak in de map van
resources
de bundel en downloadt u eventuele artefacten waarnaar wordt verwezen naar desrc
map.Tip
Als u eerst
bundle deployment bind
gebruikt om een resource in een bundel te koppelen aan een resource in de werkruimte, wordt de resource in de werkruimte na de volgendebundle deploy
bijgewerkt volgens de configuratie die in de gekoppelde bundel is gedefinieerd. Voor informatie overbundle deployment bind
, zie Bind bundle resources.
Een taak configureren die gebruikmaakt van serverloze berekeningen
In de volgende voorbeelden ziet u bundelconfiguraties om een taak te maken die gebruikmaakt van serverloze berekeningen.
Als u serverloze berekeningen wilt gebruiken om een taak uit te voeren die notebooktaken bevat, laat u de job_clusters
configuratie weg uit het bundelconfiguratiebestand.
# yaml-language-server: $schema=bundle_config_schema.json
bundle:
name: baby-names
resources:
jobs:
retrieve-filter-baby-names-job-serverless:
name: retrieve-filter-baby-names-job-serverless
tasks:
- task_key: retrieve-baby-names-task
notebook_task:
notebook_path: ./retrieve-baby-names.py
- task_key: filter-baby-names-task
depends_on:
- task_key: retrieve-baby-names-task
notebook_task:
notebook_path: ./filter-baby-names.py
targets:
development:
workspace:
host: <workspace-url>
Als u serverloze berekeningen wilt gebruiken om een taak met Python-taken uit te voeren, moet u de environments
configuratie opnemen.
# yaml-language-server: $schema=bundle_config_schema.json
bundle:
name: serverless-python-tasks
resources:
jobs:
serverless-python-job:
name: serverless-job-with-python-tasks
tasks:
- task_key: wheel-task-1
python_wheel_task:
entry_point: main
package_name: wheel_package
environment_key: Default
environments:
- environment_key: Default
spec:
client: '1'
dependencies:
- workflows_authoring_toolkit==0.0.1
targets:
development:
workspace:
host: <workspace-url>
Zie Uw Azure Databricks-taak uitvoeren met serverloze berekeningen voor werkstromen.