Jobb

Ett jobb är ett sätt att köra icke-interaktiv kod i ett Azure Databricks kluster. Du kan till exempel köra en arbetsbelastning för extrahering, transformering och inläsning (ETL) interaktivt eller enligt ett schema. Du kan också köra jobb interaktivt i notebook-användargränssnittet.

Du kan skapa och köra ett jobb med hjälp av användargränssnittet, CLI och anrop av jobb-API:et. Du kan övervaka jobbkörningsresultat med hjälp av användargränssnitt, CLI, API och e-postaviseringar. Den här artikeln fokuserar på att utföra jobbuppgifter med hjälp av användargränssnittet. De andra metoderna finns i Jobb-CLI ochJobb-API 2.1.

Du kan aktivera orkestrering av fleruppgifter i din Azure Databricks arbetsyta. När aktivitetsorkestrering är aktiverat kan ett jobb bestå av en eller flera aktiviteter och Azure Databricks hanterar aktivitetsorkestrering, klusterhantering, övervakning och felrapportering för jobbet. I en arbetsyta utan aktivitetsorkestrering aktiverat består ett jobb av en enda uppgift. Databricks rekommenderar att du aktiverar uppgiftsorkestrering för att förenkla skapandet, hanteringen och övervakningen av data- och maskininlärningsarbetsflöden. Se Krav för information om hur du aktiverar aktivitetsorkestrering.

Du kan implementera en uppgift i en Azure Databricks notebook-kod, en Delta Live Tables-pipeline eller ett program som skrivits i Scala, Java eller Python. Äldre Spark Submit-program stöds också.

När orkestrering av flera aktiviteter är aktiverat kan du styra körningsordningen för aktiviteter genom att ange beroenden mellan aktiviteterna. Du kan konfigurera uppgifter så att de körs i följd eller parallellt. Följande diagram illustrerar ett arbetsflöde som:

  1. Matar in råa klickströmsdata och utför bearbetning för att sessionisera posterna.

  2. Matar in orderdata och ansluter dem till sessionerade klickströmsdata för att skapa en förberedd datauppsättning för analys.

  3. Extraherar funktioner från förberedda data.

  4. Utför uppgifter parallellt för att bevara funktionerna och träna en maskininlärningsmodell.

    Exempelarbetsflöde för flera uppgifter

Information om hur du skapar ditt första jobb som orkestrering av flera aktiviteter finns i Snabbstart för jobb.

Viktigt

  • Du kan bara skapa jobb på en Data Science & Engineering-arbetsyta eller en Machine Learning arbetsyta.
  • En arbetsyta är begränsad till 1 000 samtidiga jobbkö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 5 000 (inklusive "kör nu" och "skickar körningar"). Den här gränsen påverkar även jobb som skapas av REST API och notebook-flöden.

Krav

Om du vill skapa jobb som orkestrera flera aktiviteter måste en administratör aktivera stöd i Databricks-administratörskonsolen.

Skapa ett jobb

  1. Gör något av följande:

    • Klicka på jobbikonen Jobb i sidopanelen och klicka på knappen Skapa jobb.
    • I sidopanelen klickar du på Skapa ikonSkapa och väljer Jobb på menyn.

    Fliken Uppgifter visas med dialogrutan Skapa uppgift om orkestrering av flera aktiviteter är aktiverat. Fliken Uppgift visas med dialogrutan Skapa uppgift om aktivitetsorkestrering inte är aktiverat.

    Skärmen Skapa uppgift

  2. Ersätt Lägg till ett namn för jobbet... med jobbnamnet.

  3. Om orkestrering av flera aktiviteter är aktiverat anger du ett namn för aktiviteten i fältet Aktivitetsnamn.

  4. Ange vilken typ av uppgift som ska köras. I listrutan Typ väljer du Notebook, JAR, Spark Submit, Pythoneller Pipeline.

    • Notebook:Använd filwebbläsaren för att hitta notebook-filen, klicka på notebook-filens namn och klicka på Bekräfta.

    • JAR:Ange Main-klassen. Använd det fullständigt kvalificerade namnet för klassen som innehåller main-metoden, till exempel org.apache.spark.examples.SparkPi . Klicka sedan på Lägg till under Beroende bibliotek för att lägga till bibliotek som krävs för att köra uppgiften. Ett av dessa bibliotek måste innehålla huvudklassen.

      Mer information om JAR-uppgifter finns i JAR-jobb.

    • Spark Submit: I textrutan Parametrar anger du huvudklassen, sökvägen till bibliotekets JAR och alla argument, formaterade som en JSON-matris med strängar. I följande exempel konfigureras en spark-submit-uppgift för att DFSReadWriteTest köra från Apache Spark exempel:

      ["--class","org.apache.spark.examples.DFSReadWriteTest","dbfs:/FileStore/libraries/spark_examples_2_12_3_1_1.jar","/dbfs/databricks-datasets/README.md","/FileStore/examples/output/"]
      

      Viktigt

      Det finns flera begränsningar för spark-submit-uppgifter:

      • Du kan bara köra spark-submit-uppgifter på nya kluster.
      • Spark-submit stöder inte automatisk skalning av kluster. Mer information om autoskalning finns i Cluster autoscaling.
      • Spark-submit stöder inte Databricks Utilities. Om du vill använda Databricks Utilities använder du JAR-uppgifter i stället.
    • Python:I textrutan Sökväg anger du URI:n för ett Python-skript på DBFS eller molnlagring; till exempel .

    • Pipeline:Välj en befintlig DeltaLive Tables-pipeline i listrutan Pipeline.

  5. Konfigurera klustret där aktiviteten körs. I listrutan Kluster väljer du antingen Nytt jobbklustereller Befintligt All-Purpose kluster.

    • Nytt jobbkluster:KlickaRedigera i listrutan Kluster och slutför klusterkonfigurationen.
    • Befintligt All-Purpose kluster:Välj ett befintligt kluster i listrutan Kluster. Om du vill öppna klustret på en ny sida klickar du på ikonen Extern länk till höger om klustrets namn och beskrivning.

    Mer information om hur du väljer och konfigurerar kluster för att köra uppgifter finns i Tips för klusterkonfiguration.

  6. Du kan skicka parametrar för uppgiften. Varje uppgiftstyp har olika krav för att formatera och skicka parametrarna.

    • Notebook:Klicka Lägg till och ange nyckeln och värdet för varje parameter som ska överföras till uppgiften. Du kan åsidosätta eller lägga till ytterligare parametrar när du manuellt kör en uppgift med alternativet Kör ett jobb med olika parametrar. Parametrar anger värdet för notebook-widgeten som anges av nyckeln för parametern . Använd aktivitetsparametervariabler för att skicka en begränsad uppsättning dynamiska värden som en del av ett parametervärde.
    • JAR:Använd en JSON-formaterad matris med strängar för att ange parametrar. Dessa strängar skickas som argument till main-metoden i huvudklassen. Se Konfigurera JAR-jobbparametrar.
    • Spark Submit-uppgift: Parametrar anges som en JSON-formaterad matris med strängar. I enlighet med Apache Spark spark-submit-konventionen skickas parametrarna efter JAR-sökvägen till main-metoden i huvudklassen.
    • Python:Använd en JSON-formaterad matris med strängar för att ange parametrar. Dessa strängar skickas som argument som kan parsas med hjälp av argparse-modulen i Python.
  7. Om du vill komma åt ytterligare alternativ, inklusive beroende bibliotek, återförsöksprincip och tidsgränser,klickar du på Avancerade alternativ. Se Redigera en uppgift.

  8. Klicka på Skapa.

  9. Om du vill kan du ange jobbets schema genom att klicka på Redigera schema på panelen Jobbinformation. Se Schemalägga ett jobb.

  10. Om du vill tillåta flera samtidiga körningar av samma jobb klickar du på Redigera samtidiga körningar på panelen Jobbinformation. Se Maximalt antal samtidiga körningar.

  11. Om du vill ange e-postadresser för att få aviseringar om jobbhändelser klickar du på Redigera aviseringar på panelen Jobbinformation. Se Aviseringar.

  12. Om du vill styra behörighetsnivåer för jobbet klickar du på Redigera behörigheterpanelen Jobbinformation. Se Kontrollera åtkomst till jobb.

Om du vill lägga till en till uppgift när aktivitetsorkestrering har aktiverats klickar du på knappen Lägg till uppgift under den uppgift som du nyss skapade.

Köra ett jobb

  1. Klicka på jobbikonen Jobb i sidofältet.
  2. Välj ett jobb och klicka på fliken Körningar. Du kan köra ett jobb direkt eller schemalägga jobbet så att det körs senare.

Köra ett jobb direkt

Om du vill köra jobbet direkt klickar du på Knappen Kör nu.

Tips

Du kan utföra en testkörning av ett jobb med en notebook-uppgift genom att klicka på Kör nu. Om du behöver göra ändringar i notebook-filen kör du automatiskt den nya versionen av notebook-filen genom att klicka på Kör nu igen när du har redigerat anteckningsboken.

Köra ett jobb med olika parametrar

Du kan använda Kör nu med olika parametrar för att köra om ett jobb med olika parametrar eller olika värden för befintliga parametrar.

  1. Klicka på Blue Down Caret bredvid Kör nu och välj Kör nu med olika parametrar, eller klicka på Kör nu med olika parametrar i tabellen Aktiva körningar. Ange de nya parametrarna beroende på typen av uppgift.
    • Notebook:Du kan ange parametrar som nyckel/värde-par eller ett JSON-objekt. Du kan använda den här dialogrutan för att ange värden för widgetar.
    • JAR och spark-submit:Du kan ange en lista med parametrar eller ett JSON-dokument. De angivna parametrarna sammanfogas med standardparametrarna för den utlösta körningen. Om du tar bort nycklar används standardparametrarna. Du kan också lägga till aktivitetsparametervariabler för körningen.
  2. Klicka på Kör.

Schemalägga ett jobb

Så här definierar du ett schema för jobbet:

  1. Klicka på Redigera schema i panelen Jobbinformation och ställ in SchematypSchemalagd.

  2. Ange period, starttid och tidszon. Du kan också markera kryssrutan Visa Cron-syntax för att visa och redigera schemat i Quartz Cron Syntax.

    Anteckning

    • Azure Databricks fram ett minsta intervall på 10 sekunder mellan efterföljande körningar som utlöses av schemat för ett jobb oavsett sekunderskonfigurationen i cron-uttrycket.
    • Du kan välja en tidszon som observerar sommartid eller UTC. Om du väljer en zon som observerar sommartid hoppas ett jobb per timme över eller kanske inte startar under en timme eller två när sommartid börjar eller slutar. Om du vill köra varje timme (absolut tid) väljer du UTC.
    • Jobbschemat är inte avsett för jobb med låg latens. På grund av nätverksproblem eller molnproblem kan jobbkörningar ibland fördröjas upp till flera minuter. I sådana fall körs schemalagda jobb omedelbart när tjänsten är tillgänglig.
  3. Klicka på Spara.

Pausa och återuppta ett jobbschema

Om du vill pausa ett jobb kan du antingen:

  • Klicka Pausa på panelen Jobbinformation.
  • Klicka på Redigera schema i panelen Jobbinformation och ställ in SchematypManuell (pausad)

Om du vill återuppta ett pausat jobbschema anger du Schematyp till Schemalagd.

Visa jobb

Klicka på JobbikonJobb i sidopanelen. Listan Jobb visas. På sidan Jobb visas alla definierade jobb, klusterdefinitionen, schemat, om det finns några, och resultatet av den senaste körningen.

Du kan filtrera jobb i listan Jobb:

  • Använda nyckelord.
  • Välja endast de jobb som du äger.
  • Välja alla jobb som du har behörighet att komma åt. Åtkomst till det här filtret kräver att åtkomstkontrollen Jobb är aktiverad.

Du kan också klicka på valfri kolumnrubrik för att sortera listan med jobb (antingen fallande eller stigande) efter den kolumnen. Standardsortering är efter jobbnamn i stigande ordning.

Visa jobbkörningar

  1. Klicka på JobbikonJobb i sidopanelen.
  2. Klicka på ett jobbnamn i kolumnen Namn. Fliken Körningar visar aktiva körningar och slutförda körningar.

Jobbinformation

Azure Databricks har en historik över jobbkörningar i upp till 60 dagar. Om du behöver bevara jobbkörningar rekommenderar Databricks att du exporterar resultat innan de upphör att gälla. Mer information finns i Exportera jobbkörningsresultat.

Visa jobbkörningsinformation

Sidan med jobbkörningsinformation innehåller jobbutdata och länkar till loggar. När orkestrering av flera aktiviteter har aktiverats innehåller sidan information om jobbkörningar information om lyckade eller misslyckade aktiviteter i jobbkörningen. Du kan komma åt jobbkörningsinformation från fliken Körningar för jobbet. Om du vill visa information om jobbkörningar på fliken Körningar klickar du på länken Visa information för körningen i kolumnen Kör i tabellen Slutförda körningar (senaste 60 dagarna).

För ett jobb som orkestrering av flera aktiviteter klickar du på en uppgift för att visa:

  • klustret som körde uppgiften
    • Spark-användargränssnittet för uppgiften
    • loggar för uppgiften
    • mått för uppgiften

Exportera jobbkörningsresultat

Du kan exportera notebook-körningsresultat och jobbkörningsloggar för alla jobbtyper.

Exportera notebook-körningsresultat

Du kan bevara jobbkörningar genom att exportera deras resultat. För notebook-jobbkörningar kan du exportera en renderad notebook-dator som senare kan importeras till Azure Databricks arbetsyta.

Så här exporterar du notebook-körningsresultat för ett jobb med en enda aktivitet:

  1. På sidan med jobbinformation klickar du på länken Visa information för körningen i kolumnen Kör i tabellen Slutförda körningar (senaste 60 dagarna).
  2. Klicka på Exportera till HTML.

Så här exporterar du notebook-körningsresultat för ett jobb med flera aktiviteter:

  1. På sidan med jobbinformation klickar du på länken Visa information för körningen i kolumnen Kör i tabellen Slutförda körningar (senaste 60 dagarna).
  2. Klicka på den notebook-uppgift som ska exporteras.
  3. Klicka på Exportera till HTML.

Exportera jobbkörningsloggar

Du kan också exportera loggarna för jobbkörningen. Du kan konfigurera jobbet att automatiskt leverera loggar till DBFS via jobb-API:et. Se objektet new_cluster.cluster_log_conf i begärandetexten som skickades till new_cluster.cluster_log_conf ( ) i POST /jobs/create jobb-API:et.

Redigera ett jobb

Vissa konfigurationsalternativ är tillgängliga för jobbet och andra alternativ är tillgängliga för enskilda aktiviteter. Till exempel kan maximalt antal samtidiga körningar anges för jobbet, medan parametrar måste definieras för varje aktivitet.

Så här ändrar du konfigurationen för ett jobb:

  1. Klicka på JobbikonJobb i sidopanelen.
  2. I kolumnen Namn klickar du på jobbnamnet.

Sidopanelen visar jobbinformationen. Du kan ändra schemat,klusterkonfigurationen, aviseringarna och det maximala antalet samtidiga körningar. Du kan också redigera jobbbehörigheter om åtkomstkontroll för jobb är aktiverad.

Maximalt antal samtidiga körningar

Det maximala antalet parallella körningar för det här jobbet. Azure Databricks hoppar över körningen om jobbet redan har nått det maximala antalet aktiva körningar när du försöker starta en ny körning. Ange det här värdet högre än standardvärdet 1 för att utföra flera körningar av samma jobb samtidigt. Detta är användbart, till exempel om du utlöser jobbet enligt ett regelbundet schema och vill tillåta att efterföljande körningar överlappar varandra, eller om du vill utlösa flera körningar som skiljer sig åt beroende på deras indataparametrar.

Aviseringar

E-postaviseringar skickas vid jobbfel, lyckade eller tidsgränser. Du kan ställa in aviseringar för jobbstart, jobbframgång och jobbfel (inklusive överhoppade jobb), vilket ger flera kommaavgränsade e-postadresser för varje aviseringstyp. Du kan också välja bort aviseringar för överhoppade jobbkörningar.

Konfigurera e-postaviseringar

Integrera dessa e-postaviseringar med dina favoritmeddelandeverktyg, inklusive:

Kontrollera åtkomsten till jobb

Med åtkomstkontroll för jobb kan jobbägare och administratörer bevilja mer information om sina jobb. Jobbägare kan välja vilka andra användare eller grupper som ska kunna visa jobbets resultat. Ägare kan också välja vem som kan hantera sina jobbkörningar (Kör nu och Avbryt körningsbehörigheter).

Mer information finns i Åtkomstkontroll för jobb.

Redigera en uppgift

Så här anger du konfigurationsalternativ för aktiviteter:

  1. Klicka på JobbikonJobb i sidopanelen.
  2. I kolumnen Namn klickar du på jobbnamnet.
  3. När orkestrering av flera aktiviteter har aktiverats klickar du på fliken Uppgifter. Om aktivitetsorkestrering inte är aktiverat klickar du på fliken Uppgift.

Aktivitetsberoenden

När orkestrering av flera aktiviteter har aktiverats kan du definiera ordningen för körningen av aktiviteter i ett jobb med hjälp av listrutan Beroende av. Du kan ange det här fältet till en eller flera aktiviteter i jobbet.

Redigera aktivitetsberoenden

Anteckning

Beroende på är inte synligt om jobbet bara består av en enda uppgift.

När du konfigurerar aktivitetsberoenden skapas en DAG (Directed Acyclic Graph) för uppgiftskörning, ett vanligt sätt att representera körningsordning i jobbschemaläggarna. Tänk dig till exempel följande jobb som består av fyra uppgifter:

Exempeldiagram över aktivitetsberoenden

  • Uppgift 1 är rotuppgiften och är inte beroende av någon annan aktivitet.
  • Uppgift 2 och uppgift 3 beror på att uppgift 1 slutförs först.
  • Slutligen är uppgift 4 beroende av att uppgift 2 och uppgift 3 slutförs korrekt.

Azure Databricks kör överordnade aktiviteter innan nedströmsaktiviteter körs, och kör så många av dem parallellt som möjligt. Följande diagram illustrerar bearbetningsordningen för dessa uppgifter:

Exempelflöde för aktivitetsberoenden

Konfigurationsalternativ för enskilda aktiviteter

Enskilda aktiviteter har följande konfigurationsalternativ:

I det här avsnittet:

Kluster

Om du vill konfigurera klustret där en aktivitet körs klickar du på listrutan Kluster. Mer information om hur du väljer och konfigurerar kluster för att köra uppgifter finns i Klusterkonfigurationstips.

Anteckning

Varje uppgift körs antingen i ett kluster för alla syften eller i ett nytt jobbkluster. Du kan inte använda samma jobbkluster för mer än en aktivitet i ett jobb.

Beroende bibliotek

Beroende bibliotek installeras i klustret innan aktiviteten körs. Du måste ange alla aktivitetsberoenden för att se till att de är installerade innan körningen startar.

Om du vill lägga till ett beroende bibliotek klickar du på Avancerade alternativ och väljer Lägg till beroende bibliotek för att öppna väljaren Lägg till beroende bibliotek. Följ rekommendationerna i Biblioteksberoenden för att ange beroenden.

Viktigt

Om du har konfigurerat ett bibliotek för att installera på alla kluster automatiskt, eller om du väljer ett befintligt avslutat kluster som har bibliotek installerade, väntar inte jobbkörningen på att biblioteksinstallationen ska slutföras. Om ett jobb kräver ett specifikt bibliotek bör du koppla biblioteket till jobbet i fältet Beroende bibliotek.

Variabler för uppgiftsparametrar

Du kan skicka mallvariabler till en jobbuppgift som en del av aktivitetens parametrar. Dessa variabler ersätts med lämpliga värden när jobbaktiviteten körs. Du kan använda aktivitetsparametervärden för att skicka kontexten om en jobbkörning, till exempel körnings-ID:t eller jobbets starttid.

När ett jobb körs ersätts aktivitetsparametervariabeln som omges av dubbla kparenteser och läggs till i ett valfritt strängvärde som ingår som en del av värdet. Om du till exempel vill skicka en parameter med namnet med värdet för för en körning av MyJobIdmy-job-6 jobb-ID 6 lägger du till följande aktivitetsparameter:

{
  "MyJobID": "my-job-{{job_id}}"
}

Innehållet i de dubbla kparenteserna utvärderas inte som uttryck, så du kan inte göra åtgärder eller funktioner inom dubbla kparenteser. Blanksteg tas inte bort inom kparenteserna, så {{ job_id }} utvärderas inte.

Följande aktivitetsparametervariabler stöds:

Variabel Beskrivning
{{job_id}} Den unika identifierare som tilldelats till ett jobb
{{run_id}} Den unika identifierare som tilldelats en jobbkörning
{{start_date}} Det datum då ett jobb startades. Formatet är yyyy-MM-dd i UTC-tidszonen.
{{start_time}} Tidsstämpeln för körningens körningsstart när klustret har skapats och är klart. Formatet är millisekunder sedan den UNIX epoken i UTC-tidszonen, som returnerades av System.currentTimeMillis() .
{{task_retry_count}} Antalet återförsök som har försökt att köra en uppgift om det första försöket misslyckas. Värdet är 0 för det första försöket och ökar med varje nytt försök.

Följande aktivitetsparametervariabler stöds när orkestrering av flera aktiviteter har aktiverats:

Variabel Beskrivning Exempelvärde
{{parent_run_id}} Den unika identifierare som tilldelats körningen av ett jobb med flera aktiviteter. 3447835
{{task_key}} Det unika namnet som tilldelats en uppgift som ingår i ett jobb med flera aktiviteter. "clean_raw_data"

Du kan ange dessa variabler med valfri aktivitet när du skapar ett jobb,redigerar ettjobb eller kör ett jobb med olika parametrar.

Tidsgräns

Maximal slutförandetid för ett jobb. Om jobbet inte slutförs under den här tiden Azure Databricks dess status till "Timed Out".

Antal försök

En princip som avgör när och hur många gånger misslyckade körningar ska köras igen. Om du vill ange återförsök för aktiviteten klickar du på Avancerade alternativ och väljer Redigera återförsöksprincip.

Anteckning

Om du konfigurerar både Timeoutoch Återförsökgäller tidsgränsen för varje återförsök.

Klona ett jobb

Du kan snabbt skapa ett nytt jobb genom att klona konfigurationen av ett befintligt jobb. När du klonar ett jobb skapas en identisk kopia av jobbet, förutom jobb-ID:t. På jobbets sida klickar du på Mer ... bredvid jobbets namn och väljer Klona i listrutan.

Ta bort ett jobb

Om du vill ta bort ett jobb klickar du på Mer ... bredvid jobbets namn på jobbet på jobbsidan och väljer Ta bort på den nedrullningsna menyn.

Ta bort en uppgift

Om du vill ta bort en uppgift när orkestrering av flera aktiviteter har aktiverats klickar du på fliken Uppgifter, väljer den uppgift som ska tas bort och klickar på Knappen Ta bort uppgift.

Bästa praxis

I det här avsnittet:

Tips för klusterkonfiguration

Klusterkonfigurationen är viktig när du operationaliserar ett jobb. Följande ger allmänna riktlinjer för att välja och konfigurera jobbkluster, följt av rekommendationer för specifika jobbtyper.

Välj rätt klustertyp för jobbet

  • Nya jobbkluster är dedikerade kluster som skapas och startas när du kör en uppgift och avslutas omedelbart efter att uppgiften har slutförts. I produktion rekommenderar Databricks att du använder nya kluster så att varje uppgift körs i en helt isolerad miljö.
  • När du kör en uppgift i ett nytt kluster behandlas uppgiften som en arbetsbelastning för datateknik (uppgift), baserat på priset för uppgiftsarbetsbelastningen. När du kör en uppgift i ett befintligt kluster för alla syften behandlas uppgiften som en arbetsbelastning för dataanalys (all-purpose) enligt priset för alla syften.
  • Om du väljer ett avslutat befintligt kluster och jobbägaren har behörigheten Kan starta omAzure Databricksstartar klustret när jobbet är schemalagt att köras.
  • Befintliga kluster för alla syften fungerar bäst för uppgifter som att uppdatera instrumentpaneler med jämna mellanrum.

Använda en pool för att minska klustrets starttider

Om du vill minska starttiden för det nya jobbklustret skapar du en pool och konfigurerar jobbets kluster för att använda poolen.

Tips för notebook-jobb

Totalt antal notebook-cellutdata (kombinerade utdata för alla notebook-celler) omfattas av en storleksgräns på 20 MB. Dessutom omfattas enskilda cellutdata av en storleksgräns på 8 MB. Om den totala cellutdatan överskrider 20 MB, eller om utdata för en enskild cell är större än 8 MB, avbryts körningen och markeras som misslyckad.

Om du behöver hjälp med att hitta celler nära eller utanför gränsen kör du notebook-anteckningsboken mot ett kluster för alla syften och använder den här metoden för att spara notebook-datorer automatiskt.

Strömningsaktiviteter

Spark Streaming-jobb bör aldrig ha maximalt antal samtidiga körningar inställda på större än 1. Direktuppspelningsjobb bör också ställas in så att de körs med ett "* * * * * *" Cron-schema (varje sekund) eller varje minut. Dessutom bör återförsök aldrig aktiveras för direktuppspelningsjobb.

Eftersom en strömningsaktivitet körs kontinuerligt bör den alltid vara den sista uppgiften i ett jobb.

JAR-jobb

Tänk på följande när du kör ett JAR-jobb:

Storleksgränser för utdata

Anteckning

Tillgänglig i Databricks Runtime 6.3 och högre.

Jobbutdata, till exempel loggutdata som skickas till stdout, omfattas av en storleksgräns på 20 MB. Om den totala utdatastorleken är större avbryts körningen och markeras som misslyckad.

För att undvika att stöta på den här gränsen kan du förhindra att stdout returneras från drivrutinen till Azure Databricks genom att ange spark.databricks.driver.disableScalaOutput Spark-konfigurationen till true . Som standard är flaggvärdet false . Flaggan styr cellutdata för Scala JAR-jobb och Scala-notebook-datorer. Om flaggan är aktiverad returnerar Spark inte jobbkörningsresultat till klienten. Flaggan påverkar inte de data som skrivs i klustrets loggfiler. Att ange den här flaggan rekommenderas endast för jobbkluster för JAR-jobb eftersom det inaktiverar notebook-resultat.

Använda den delade SparkContext

Eftersom Azure Databricks är en hanterad tjänst kan vissa kodändringar vara nödvändiga för att säkerställa att dina Apache Spark körs korrekt. JAR-jobbprogram måste använda det delade SparkContext API:et för att hämta SparkContext . Eftersom Azure Databricks initierar kommer SparkContext de program som anropas att new SparkContext() misslyckas. Hämta genom SparkContext att bara använda den delade som skapats av SparkContext Azure Databricks:

val goodSparkContext = SparkContext.getOrCreate()
val goodSparkSession = SparkSession.builder().getOrCreate()

Det finns också flera metoder som du bör undvika när du använder den delade SparkContext .

  • Anropa inte SparkContext.stop() .
  • Anropa inte System.exit(0) eller i slutet av sc.stop()Main programmet. Detta kan orsaka odefinierat beteende.

Använda try-finally block för jobbrensning

Tänk dig en JAR som består av två delar:

  • jobBody() som innehåller den huvudsakliga delen av jobbet.
  • jobCleanup() som måste köras efter om jobBody() funktionen lyckades eller returnerade ett undantag.

Du kan till jobBody() exempel skapa tabeller och du kan använda för att ta bort dessa jobCleanup() tabeller.

Det säkra sättet att se till att rensningsmetoden anropas är att placera try-finally ett block i koden:

try {
  jobBody()
} finally {
  jobCleanup()
}

Du bör inte försöka rensa med hjälp av eller följande kod:

val cleanupThread = new Thread { override def run = jobCleanup() }
Runtime.getRuntime.addShutdownHook(cleanupThread)

På grund av hur livslängden för Spark-containrar hanteras i Azure Databricks, körs inte avstängnings-hookarna på ett tillförlitligt sätt.

Konfigurera JAR-jobbparametrar

Du skickar parametrar till JAR-jobb med en JSON-strängmatris. Se objektet spark_jar_task i begärandetexten som skickades till spark_jar_task ( ) i POST /jobs/create jobb-API:et. Om du vill komma åt dessa parametrar inspekterar String du matrisen som skickas till main din funktion.

Biblioteksberoenden

Spark-drivrutinen har vissa biblioteksberoenden som inte kan åsidosättas. Biblioteken prioriteras framför alla bibliotek som står i konflikt med dem.

Om du vill hämta en fullständig lista över beroenden för drivrutinsbiblioteket kör du följande kommando i en notebook-fil som är ansluten till ett kluster med samma Spark-version (eller klustret med den drivrutin som du vill undersöka).

%sh
ls /databricks/jars

Hantera biblioteksberoenden

En bra tumregel när du hanterar biblioteksberoenden när du skapar JAR för jobb är att lista Spark och Hadoop provided som beroenden. På Maven lägger du till Spark och Hadoop som angivna beroenden, som du ser i följande exempel:

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>2.3.0</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-core</artifactId>
  <version>1.2.1</version>
  <scope>provided</scope>
</dependency>

I sbt lägger du till Spark och Hadoop som angivna beroenden, som du ser i följande exempel:

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.3.0" % "provided"
libraryDependencies += "org.apache.hadoop" %% "hadoop-core" % "1.2.1" % "provided"

Tips

Ange rätt Scala-version för dina beroenden baserat på vilken version du kör.