Werkstromen plannen en organiseren
Databricks-werkstromen bevat hulpprogramma's waarmee u taken voor gegevensverwerking kunt plannen en organiseren in Azure Databricks. U gebruikt Databricks-werkstromen om Databricks-taken te configureren.
In dit artikel worden concepten en keuzes geïntroduceerd met betrekking tot het beheren van productieworkloads met behulp van Databricks-taken.
Wat zijn Databricks-taken?
Een taak is de primaire eenheid voor het plannen en organiseren van productieworkloads in Azure Databricks. Taken bestaan uit een of meer taken. Met taken en taken kunt u het volgende configureren en implementeren:
- Aangepaste logica, waaronder Spark, SQL, OSS Python, ML en willekeurige code.
- Rekenresources met aangepaste omgevingen en bibliotheken.
- Planningen en triggers voor het uitvoeren van workloads.
- Voorwaardelijke logica voor controlestroom tussen taken.
Taken bieden een procedurele benadering voor het definiëren van relaties tussen taken. Delta Live Tables-pijplijnen bieden een declaratieve benadering voor het definiëren van relaties tussen gegevenssets en transformaties. U kunt Pijplijnen voor Delta Live Tables opnemen als een taak in een taak. Zie pijplijntaak voor Delta Live Tables voor taken.
Taken kunnen in complexiteit variëren van één taak waarop een Databricks-notebook wordt uitgevoerd tot duizenden taken die worden uitgevoerd met voorwaardelijke logica en afhankelijkheden.
Hoe kan ik taken configureren en uitvoeren?
U kunt een taak maken en uitvoeren met behulp van de takeninterface, de Databricks CLI of door de Taken-API aan te roepen. Met behulp van de gebruikersinterface of API kunt u een mislukte of geannuleerde taak herstellen en opnieuw uitvoeren. U kunt de resultaten van de taakuitvoering controleren met behulp van de gebruikersinterface, CLI, API en meldingen (bijvoorbeeld e-mail, webhookbestemming of Slack-meldingen).
Als u de voorkeur geeft aan een IaC-benadering (Infrastructure-as-Code) voor het configureren en organiseren van uw taken, gebruikt u Databricks Asset Bundles (DABs). Bundels kunnen YAML-definities van taken en taken bevatten, worden beheerd met behulp van de Databricks CLI en kunnen worden gedeeld en uitgevoerd in verschillende doelwerkruimten (zoals ontwikkeling, fasering en productie). Zie Databricks Asset Bundles voor meer informatie over het gebruik van DABs om uw taken te configureren en te organiseren.
Zie Wat is de Databricks CLI?voor meer informatie over het gebruik van de Databricks CLI. Zie de Taken-API voor meer informatie over het gebruik van de Jobs-API.
Wat is de minimale configuratie die nodig is voor een taak?
Voor alle taken in Azure Databricks is het volgende vereist:
- Broncode (zoals een Databricks-notebook) die logica bevat die moet worden uitgevoerd.
- Een rekenresource om de logica uit te voeren. De rekenresource kan serverloze rekenkracht, klassieke taken of rekenkracht voor alle doeleinden zijn. Zie Rekenproces configureren voor taken.
- Een opgegeven planning voor wanneer de taak moet worden uitgevoerd. U kunt eventueel een planning weglaten en de taak handmatig activeren.
- Een unieke naam.
Notitie
Als u uw code in Databricks-notebooks ontwikkelt, kunt u de knop Planning gebruiken om dat notebook als taak te configureren. Zie Geplande notebooktaken maken en beheren.
Wat is een taak?
Een taak vertegenwoordigt een logische eenheid die moet worden uitgevoerd als een stap in een taak. Taken kunnen variëren in complexiteit en kunnen het volgende omvatten:
- A notebook
- Een JAR
- SQL-query's
- Een DLT-pijplijn
- Een andere taak
- Stroomtaken beheren
U kunt de uitvoeringsvolgorde van taken beheren door ertussen afhankelijkheden op te geven. U kunt taken zo configureren dat ze op volgorde of parallel worden uitgevoerd.
Taken communiceren met statusinformatie en metagegevens van taken, maar taakbereik is geïsoleerd. U kunt taakwaarden gebruiken om context te delen tussen geplande taken. Zie Taakwaarden gebruiken om informatie door te geven tussen taken.
Welke opties voor de controlestroom zijn beschikbaar voor taken?
Wanneer u taken en taken in taken configureert, kunt u instellingen aanpassen die bepalen hoe de hele taak en afzonderlijke taken worden uitgevoerd. Dit zijn de volgende opties:
- Triggers
- Nieuwe pogingen
- Uitvoeren als voorwaardelijke taken
- Voorwaardelijke taken als/anders
- Voor elke taak
- Drempelwaarden voor duur
- Instellingen voor gelijktijdigheid
Triggertypen
U moet een triggertype opgeven wanneer u een taak configureert. U kunt kiezen uit de volgende triggertypen:
U kunt er ook voor kiezen om uw taak handmatig te activeren, maar dit is voornamelijk gereserveerd voor specifieke gebruiksvoorbeelden, zoals:
- U gebruikt een extern indelingsprogramma om taken te activeren met behulp van REST API-aanroepen.
- U hebt een taak die zelden wordt uitgevoerd en waarvoor handmatige interventie is vereist voor validatie of het oplossen van problemen met de kwaliteit van gegevens.
- U voert een workload uit die slechts eenmaal of een paar keer hoeft te worden uitgevoerd, zoals een migratie.
Zie Triggertypen voor Databricks-taken.
Nieuwe pogingen
Nieuwe pogingen geven aan hoe vaak een bepaalde taak opnieuw moet worden uitgevoerd als de taak mislukt met een foutbericht. Fouten zijn vaak tijdelijk en opgelost door opnieuw opstarten. Sommige functies in Azure Databricks, zoals de ontwikkeling van schema's met Structured Streaming, gaan ervan uit dat u taken uitvoert met nieuwe pogingen om de omgeving opnieuw in te stellen en dat een werkstroom kan worden voortgezet.
Als u nieuwe pogingen voor een taak opgeeft, wordt de taak opnieuw opgestart tot het opgegeven aantal keren als er een fout optreedt. Niet alle taakconfiguraties ondersteunen nieuwe pogingen voor taken. Zie Beleid voor opnieuw proberen instellen.
Wanneer databricks wordt uitgevoerd in de continue triggermodus, wordt automatisch opnieuw geprobeerd met exponentieel uitstel. Zie Hoe worden fouten verwerkt voor doorlopende taken?
Uitvoeren als voorwaardelijke taken
U kunt uitvoeren als taaktype gebruiken om voorwaardelijke voorwaarden voor latere taken op te geven op basis van het resultaat van andere taken. U voegt taken toe aan uw taak en geeft upstream-afhankelijke taken op. Op basis van de status van deze taken kunt u een of meer downstreamtaken configureren om uit te voeren. Taken ondersteunen de volgende afhankelijkheden:
- Alle geslaagde
- Ten minste één geslaagd
- Geen mislukt
- Klaar
- Ten minste één mislukt
- Alles is mislukt
Zie Taakafhankelijkheden configureren
Voorwaardelijke taken als/anders
U kunt het taaktype If/else gebruiken om voorwaarden op te geven op basis van een bepaalde waarde. Zie Vertakkingslogica toevoegen aan een taak met de taak If/else.
Taken ondersteunen taskValues
die u in uw logica definieert en waarmee u de resultaten van een berekening of status van een taak naar de taakomgeving kunt retourneren. U kunt If/else-voorwaarden definiëren op taskValues
basis van, taakparameters of dynamische waarden.
Azure Databricks ondersteunt de volgende operanden voor voorwaarden:
==
!=
>
>=
<
<=
Zie ook:
- Taakwaarden gebruiken om informatie door te geven tussen taken
- Wat is een verwijzing naar dynamische waarden?
- Taken parameteriseren
Voor elke taak
Gebruik de For each
taak om een andere taak in een lus uit te voeren, waarbij een andere set parameters wordt doorgegeven aan elke iteratie van de taak.
Voor het toevoegen van de For each
taak aan een taak moeten twee taken worden gedefinieerd: de For each
taak en een geneste taak. De geneste taak is de taak die moet worden uitgevoerd voor elke iteratie van de For each
taak en is een van de standaard databricks-taaktypen. Er worden meerdere methoden ondersteund voor het doorgeven van parameters aan de geneste taak.
Zie Een geparameteriseerde Azure Databricks-taak uitvoeren in een lus.
Drempelwaarde voor duur
U kunt een drempelwaarde voor de duur opgeven om een waarschuwing te verzenden of een taak of taak te stoppen als een opgegeven duur wordt overschreden. Voorbeelden van wanneer u deze instelling wilt configureren, zijn onder andere:
- U hebt taken die gevoelig zijn om vast te zitten in een vastgelopen status.
- U moet een technicus waarschuwen als een SLA voor een werkstroom wordt overschreden.
- Om onverwachte kosten te voorkomen, wilt u een taak mislukken die is geconfigureerd met een groot cluster.
Zie Een verwachte voltooiingstijd of een time-out voor een taak configureren en een verwachte voltooiingstijd of een time-out voor een taak configureren.
Gelijktijdigheid
De meeste taken worden geconfigureerd met de standaard gelijktijdigheid van 1 gelijktijdige taak. Dit betekent dat als een vorige taakuitvoering niet is voltooid op het moment dat een nieuwe taak moet worden geactiveerd, de volgende taakuitvoering wordt overgeslagen.
Sommige gebruiksvoorbeelden bestaan voor meer gelijktijdigheid, maar voor de meeste workloads hoeft deze instelling niet te worden gewijzigd.
Zie databricks-taken in de wachtrij- en gelijktijdigheidsinstellingen voor meer informatie over het configureren van gelijktijdigheid.
Hoe kan ik taken bewaken?
In de gebruikersinterface voor taken kunt u taakuitvoeringen zien, inclusief uitvoeringen die worden uitgevoerd. Zie Bewaking en waarneembaarheid voor Databricks-taken.
U kunt meldingen ontvangen wanneer een taak of taak wordt gestart, voltooid of mislukt. U kunt meldingen verzenden naar een of meer e-mailadressen of systeembestemmingen. Zie E-mail- en systeemmeldingen toevoegen voor taakevenementen.
Systeemtabellen bevatten een lakeflow
schema waarin u records met betrekking tot taakactiviteit in uw account kunt bekijken. Zie naslaginformatie over de systeemtabel Jobs.
U kunt ook de systeemtabellen voor taken samenvoegen met factureringstabellen om de kosten van taken in uw account te bewaken. Zie Taakkosten bewaken met systeemtabellen.
Beperkingen
De volgende beperkingen gelden:
- Een werkruimte is beperkt tot 2000 gelijktijdige taakuitvoeringen. Het antwoord
429 Too Many Requests
wordt geretourneerd wanneer u een uitvoering aanvraagt die niet onmiddellijk kan worden gestart. - Het aantal taken dat een werkruimte in een uur kan maken, is beperkt tot 10000 (inclusief 'runs submit'). Deze limiet is ook van invloed op taken die zijn gemaakt door de REST API- en notebook-werkstromen.
- Een werkruimte kan maximaal 12000 opgeslagen taken bevatten.
- Een taak kan maximaal 100 taken bevatten.
Kan ik werkstromen programmatisch beheren?
Databricks heeft hulpprogramma's en API's waarmee u uw werkstromen programmatisch kunt plannen en organiseren, waaronder de volgende:
- Databricks-CLI
- Databricks Asset Bundles
- Databricks-extensie voor Visual Studio Code
- Databricks SDK's
- REST API voor taken
Zie Ontwikkelhulpprogramma's voor meer informatie over ontwikkelhulpprogramma's.
Werkstroomindeling met Apache AirFlow
U kunt Apache Airflow gebruiken om uw gegevenswerkstromen te beheren en te plannen. Met Airflow definieert u uw werkstroom in een Python-bestand en beheert Airflow de planning en uitvoering van de werkstroom. Zie Azure Databricks-taken organiseren met Apache Airflow.
Werkstroomindeling met Azure Data Factory
Azure Data Factory (ADF) is een cloudservice voor gegevensintegratie waarmee u services voor gegevensopslag, verplaatsing en verwerking kunt opstellen in geautomatiseerde gegevenspijplijnen. U kunt ADF gebruiken om een Azure Databricks-taak in te delen als onderdeel van een ADF-pijplijn.
ADF biedt ook ingebouwde ondersteuning voor het uitvoeren van Databricks-notebooks, Python-scripts of code die is verpakt in JAR's in een ADF-pijplijn.
Zie Een Databricks-notebook uitvoeren met de Databricks-notebookactiviteit in Azure Data Factory, gevolgd door Gegevens transformeren door een Databricks-notebook uit te voeren.
Zie Gegevens transformeren door een Python-activiteit uit te voeren in Azure Databricks voor meer informatie over het uitvoeren van een Python-script in een ADF-pijplijn.
Zie Gegevens transformeren door een JAR-activiteit uit te voeren in Azure Databricks voor meer informatie over het uitvoeren van code die is verpakt in een JAR-pijplijn.