Schemalägga och samordna arbetsflöden

Databricks-arbetsflöden har verktyg som gör att du kan schemalägga och samordna databearbetningsuppgifter i Azure Databricks. Du använder Databricks-arbetsflöden för att konfigurera Databricks-jobb.

Den här artikeln beskriver begrepp och val som rör hantering av produktionsarbetsbelastningar med hjälp av Databricks-jobb.

Vad är Databricks-jobb?

Ett jobb är den primära enheten för schemaläggning och orkestrering av produktionsarbetsbelastningar i Azure Databricks. Jobb består av en eller flera aktiviteter. Tillsammans kan du konfigurera och distribuera följande uppgifter och jobb:

  • Anpassad logik, inklusive Spark, SQL, OSS Python, ML och godtycklig kod.
  • Beräkna resurser med anpassade miljöer och bibliotek.
  • Scheman och utlösare för körning av arbetsbelastningar.
  • Villkorsstyrd logik för kontrollflöde mellan aktiviteter.

Jobb ger en procedurmässig metod för att definiera relationer mellan uppgifter. Delta Live Tables-pipelines ger en deklarativ metod för att definiera relationer mellan datauppsättningar och transformeringar. Du kan inkludera Delta Live Tables-pipelines som en uppgift i ett jobb. Se Delta Live Tables-pipelineaktivitet för jobb.

Jobb kan variera i komplexitet från en enskild uppgift som kör en Databricks-anteckningsbok till tusentals aktiviteter som körs med villkorsstyrd logik och beroenden.

Hur konfigurerar och kör jag jobb?

Du kan skapa och köra ett jobb med hjälp av jobbgränssnittet, Databricks CLI eller genom att anropa jobb-API:et. Med hjälp av användargränssnittet eller API:et kan du reparera och köra ett misslyckat eller avbrutet jobb igen. Du kan övervaka jobbkörningsresultat med hjälp av UI, CLI, API och meddelanden (till exempel e-post, webhook-mål eller Slack-meddelanden).

Om du föredrar en IaC-metod (infrastructure-as-code) för att konfigurera och orkestrera dina jobb använder du Databricks Asset Bundles (DAB). Paket kan innehålla YAML-definitioner av jobb och uppgifter, hanteras med Databricks CLI och kan delas och köras på olika målarbetsytor (till exempel utveckling, mellanlagring och produktion). Mer information om hur du använder DAB för att konfigurera och samordna dina jobb finns i Databricks-tillgångspaket.

Mer information om hur du använder Databricks CLI finns i Vad är Databricks CLI?. Mer information om hur du använder jobb-API:et finns i Jobb-API:et.

Vilken är den minsta konfiguration som krävs för ett jobb?

Alla jobb i Azure Databricks kräver följande:

  • Källkod (till exempel en Databricks-notebook-fil) som innehåller logik som ska köras.
  • En beräkningsresurs för att köra logiken. Beräkningsresursen kan vara serverlös beräkning, klassisk jobbberäkning eller all-purpose compute. Se Konfigurera beräkning för jobb.
  • Ett angivet schema för när jobbet ska köras. Du kan också utelämna att ange ett schema och utlösa jobbet manuellt.
  • Ett unikt namn.

Kommentar

Om du utvecklar koden i Databricks-notebook-filer kan du använda knappen Schema för att konfigurera anteckningsboken som ett jobb. Se Skapa och hantera schemalagda notebook-jobb.

Vad är en uppgift?

En uppgift representerar en logikenhet som ska köras som ett steg i ett jobb. Uppgifter kan variera i komplexitet och kan innehålla följande:

  • En notebook-fil
  • EN JAR
  • SQL-frågor
  • En DLT-pipeline
  • Ett annat jobb
  • Kontrollera flödesuppgifter

Du kan styra körningsordningen för aktiviteter genom att ange beroenden mellan dem. Du kan konfigurera aktiviteter så att de körs i följd eller parallellt.

Jobb interagerar med tillståndsinformation och metadata för uppgifter, men aktivitetsomfånget är isolerat. Du kan använda aktivitetsvärden för att dela kontext mellan schemalagda aktiviteter. Se Använda aktivitetsvärden för att skicka information mellan aktiviteter.

Vilka alternativ för kontrollflöde är tillgängliga för jobb?

När du konfigurerar jobb och uppgifter i jobb kan du anpassa inställningar som styr hur hela jobbet och enskilda aktiviteter körs. Följande alternativ är:

Utlösartyper

Du måste ange en utlösartyp när du konfigurerar ett jobb. Du kan välja mellan följande utlösartyper:

Du kan också välja att utlösa jobbet manuellt, men detta är främst reserverat för specifika användningsfall som:

  • Du använder ett externt orkestreringsverktyg för att utlösa jobb med hjälp av REST API-anrop.
  • Du har ett jobb som körs sällan och kräver manuella åtgärder för validering eller för att lösa problem med datakvalitet.
  • Du kör en arbetsbelastning som bara behöver köras en eller flera gånger, till exempel en migrering.

Se Utlösartyper för Databricks-jobb.

Försök

Omförsök anger hur många gånger en viss aktivitet ska köras igen om aktiviteten misslyckas med ett felmeddelande. Fel är ofta tillfälliga och löses genom omstart. Vissa funktioner i Azure Databricks, till exempel schemautveckling med strukturerad direktuppspelning, förutsätter att du kör jobb med återförsök för att återställa miljön och låta ett arbetsflöde fortsätta.

Om du anger återförsök för en aktivitet startas aktiviteten om upp till det angivna antalet gånger om det uppstår ett fel. Alla jobbkonfigurationer stöder inte återförsök av aktiviteter. Se Ange en återförsöksprincip.

När databricks körs i kontinuerligt utlösarläge försöker de automatiskt igen med exponentiell backoff. Se Hur hanteras fel för kontinuerliga jobb?.

Kör om villkorsstyrda uppgifter

Du kan använda aktivitetstypen Kör om för att ange villkor för senare aktiviteter baserat på resultatet av andra aktiviteter. Du lägger till aktiviteter i jobbet och anger överordnade uppgifter. Baserat på statusen för dessa uppgifter kan du konfigurera en eller flera underordnade aktiviteter som ska köras. Jobb stöder följande beroenden:

  • Alla lyckades
  • Minst en lyckades
  • Ingen misslyckades
  • Allt klart
  • Minst en misslyckades
  • Allt misslyckades

Se Konfigurera aktivitetsberoenden

Om/annars villkorsstyrda uppgifter

Du kan använda aktivitetstypen If/else för att ange villkor baserat på ett visst värde. Se Lägga till förgreningslogik i ett jobb med uppgiften If/else.

Jobb stöder taskValues att du definierar i din logik och gör att du kan returnera resultatet av viss beräkning eller tillstånd från en uppgift till jobbmiljön. Du kan definiera If/else-villkor mot taskValues, jobbparametrar eller dynamiska värden.

Azure Databricks stöder följande operander för villkorsstyrda:

  • ==
  • !=
  • >
  • >=
  • <
  • <=

Se även:

För varje uppgift

Använd uppgiften For each för att köra en annan aktivitet i en loop och skicka en annan uppsättning parametrar till varje iteration av aktiviteten.

För att lägga till uppgiften i For each ett jobb måste du definiera två aktiviteter: Uppgiften For each och en kapslad uppgift. Den kapslade aktiviteten är den uppgift som ska köras för varje iteration av For each aktiviteten och är en av standardtyperna för Databricks-jobb. Flera metoder stöds för att skicka parametrar till den kapslade aktiviteten.

Se Köra en parameteriserad Azure Databricks-jobbaktivitet i en loop.

Tröskelvärde för varaktighet

Du kan ange ett tröskelvärde för varaktighet för att skicka en varning eller stoppa en uppgift eller ett jobb om en angiven varaktighet överskrids. Exempel på när du kanske vill konfigurera den här inställningen är följande:

  • Du har uppgifter som är benägna att fastna i ett låst tillstånd.
  • Du måste varna en tekniker om ett serviceavtal för ett arbetsflöde överskrids.
  • För att undvika oväntade kostnader vill du misslyckas med ett jobb som konfigurerats med ett stort kluster.

Se Konfigurera en förväntad slutförandetid eller en tidsgräns för ett jobb och Konfigurera en förväntad slutförandetid eller en tidsgräns för en aktivitet.

Samtidighet

De flesta jobb konfigureras med standardkonkurrensen för ett samtidigt jobb. Det innebär att om en tidigare jobbkörning inte har slutförts när ett nytt jobb ska utlösas hoppas nästa jobbkörning över.

Vissa användningsfall finns för ökad samtidighet, men de flesta arbetsbelastningar kräver inte att den här inställningen ändras.

Mer information om hur du konfigurerar samtidighet finns i Kö- och samtidighetsinställningar för Databricks-jobb.

Hur kan jag övervaka jobb?

Med jobbgränssnittet kan du se jobbkörningar, inklusive pågående körningar. Se Övervakning och observerbarhet för Databricks-jobb.

Du kan få meddelanden när ett jobb eller en uppgift startar, slutförs eller misslyckas. Du kan skicka meddelanden till en eller flera e-postadresser eller systemmål. Se Lägga till e-post- och systemaviseringar för jobbhändelser.

Systemtabeller innehåller ett lakeflow schema där du kan visa poster som är relaterade till jobbaktivitet i ditt konto. Se Systemtabellreferens för jobb.

Du kan också ansluta systemtabellerna för jobb till faktureringstabeller för att övervaka kostnaden för jobb i hela ditt konto. Se Övervaka jobbkostnader med systemtabeller.

Begränsningar

Följande begränsningar finns:

  • En arbetsyta är begränsad till 2 000 samtidiga aktivitetskörningar. Ett 429 Too Many Requests-svar returneras när du begär en körning som inte kan starta omedelbart.
  • Antalet jobb som en arbetsyta kan skapa på en timme är begränsat till 1 0000 (inklusive "kör skicka"). Den här gränsen påverkar även jobb som skapas av REST API och notebook-flöden.
  • En arbetsyta kan innehålla upp till 12 000 sparade jobb.
  • Ett jobb kan innehålla upp till 100 aktiviteter.

Kan jag hantera arbetsflöden programmatiskt?

Databricks har verktyg och API:er som gör att du kan schemalägga och samordna dina arbetsflöden programmatiskt, inklusive följande:

Mer information om utvecklarverktyg finns i Utvecklarverktyg.

Arbetsflödesorkestrering med Apache AirFlow

Du kan använda Apache Airflow för att hantera och schemalägga dina dataarbetsflöden. Med Airflow definierar du arbetsflödet i en Python-fil och Airflow hanterar schemaläggning och körning av arbetsflödet. Se Dirigera Azure Databricks-jobb med Apache Airflow.

Arbetsflödesorkestrering med Azure Data Factory

Azure Data Factory (ADF) är en molndataintegreringstjänst som gör att du kan skapa datalagring, förflyttning och bearbetning av tjänster till automatiserade datapipelines. Du kan använda ADF för att orkestrera ett Azure Databricks-jobb som en del av en ADF-pipeline.

Information om hur du kör ett jobb med hjälp av ADF-webbaktiviteten, inklusive hur du autentiserar till Azure Databricks från ADF, finns i Använda Azure Databricks-jobborkestrering från Azure Data Factory.

ADF har också inbyggt stöd för att köra Databricks-notebook-filer, Python-skript eller kod som paketeras i JAR:er i en ADF-pipeline.

Information om hur du kör en Databricks-notebook-fil i en ADF-pipeline finns i Köra en Databricks-notebook-fil med databricks notebook-aktiviteten i Azure Data Factory, följt av Transformera data genom att köra en Databricks-notebook-fil.

Information om hur du kör ett Python-skript i en ADF-pipeline finns i Transformera data genom att köra en Python-aktivitet i Azure Databricks.

Information om hur du kör kod som paketerats i en JAR i en ADF-pipeline finns i Transformera data genom att köra en JAR-aktivitet i Azure Databricks.