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 Werkstromen plannen en organiseren. 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 volledig nieuwe bundel wilt maken, raadpleegt u 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 bijvoorbeeld
https://adb-1234567890123456.7.azuredatabricks.net
door<workspace-url>
de URL van uw Azure Databricks per werkruimte.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
Template to use
de standaardwaarde staandefault-python
door op te drukkenEnter
.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 geeft u de Databricks CLI de opdracht om geen voorbeeldpijplijn voor Delta Live Tables 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 aanpassen van taken komen de toewijzingen in een taakdeclaratie overeen met de nettolading van de aanvraag, uitgedrukt in YAML-indeling, van de taakbewerking maken zoals beschreven in POST /api/2.1/jobs/create in de REST API-verwijzing.
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 in de map Gebruikers
<your-username>
>> .bundle ><project-name>
> dev > files > src. 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 Taken 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 in de hoofdmap de Databricks CLI om de
bundle run
opdracht als volgt uit te voeren, waarbij u<project-name>
de naam van uw project vervangt door stap 2:databricks bundle run -t dev <project-name>_job
Kopieer de waarde die
Run URL
in uw terminal wordt weergegeven en plak deze waarde 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.
Zie de taak voor meer informatie over de taakdefinitie in bundels.
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 de yaml 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 de
.ipynb
indeling door te > > klikken op IPython Notebook van De Azure Databricks-notebook in de gebruikersinterface van Azure Databricks.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 gebruikersinterface van Taken of gebruik de Opdracht Databricks CLI
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
bundle deployment bind
eerst een resource in een bundel koppelt aan een resource in de werkruimte, wordt de resource in de werkruimte bijgewerkt op basis van de configuratie die is gedefinieerd in de bundel waaraan deze is gebonden na de volgendebundle deploy
. Zie Bind-bundelbronnen voor meer informatiebundle deployment bind
.
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.