Dela via


Direktuppspelning och inkrementell inmatning

Azure Databricks använder Apache Spark Structured Streaming för att stödja flera produkter som är associerade med inmatningsarbetsbelastningar, inklusive:

  • Auto Loader
  • COPY INTO
  • Delta Live Tables-pipelines
  • Materialiserade vyer och strömmande tabeller i Databricks SQL

Den här artikeln beskriver några av skillnaderna mellan strömning och inkrementell batchbearbetningssemantik och ger en översikt över hur du konfigurerar inmatningsarbetsbelastningar för önskad semantik i Databricks.

Vad är skillnaden mellan strömmande och inkrementell batchinmatning?

Möjliga inmatningsarbetsflödeskonfigurationer sträcker sig från bearbetning i nära realtid till sällan inkrementell batchbearbetning. Båda mönstren använder Apache Spark Structured Streaming för att driva inkrementell bearbetning, men har olika semantik. För enkelhetens skull refererar den här artikeln till inmatning i nära realtid som strömmande inmatning och mer sällan inkrementell bearbetning som inkrementell batchinmatning.

Strömningsinmatning

Direktuppspelning, i samband med datainmatning och tabelluppdateringar, refererar till databearbetning i nära realtid där Azure Databricks matar in poster från källa till mottagare i mikrobatcher med hjälp av always-on-infrastruktur. En strömmande arbetsbelastning matar kontinuerligt in uppdateringar från konfigurerade datakällor, såvida inte ett fel inträffar som stoppar inmatningen.

Inkrementell batchinmatning

Inkrementell batchinmatning refererar till ett mönster där alla nya poster bearbetas från en datakälla i ett kortvarigt jobb. Inkrementell batchinmatning sker ofta enligt ett schema, men det kan också utlösas manuellt eller baserat på filinhämtning.

Inkrementell batchinmatning skiljer sig från batchinmatning eftersom den automatiskt identifierar nya poster i datakällan och ignorerar poster som redan har matats in.

Inmatning med jobb

Med Databricks-jobb kan du samordna arbetsflöden och schemalägga uppgifter som omfattar notebook-filer, bibliotek, Delta Live Tables-pipelines och Databricks SQL-frågor.

Kommentar

Du kan använda alla Azure Databricks-beräkningstyper och aktivitetstyper för att konfigurera inkrementell batchinmatning. Strömmande inmatning stöds endast i produktion på klassiska jobbsberäkningar och Delta Live Tables.

Jobb har två primära driftlägen:

  • Kontinuerliga jobb försöker automatiskt igen om de stöter på ett fel. Det här läget är avsett för strömmande inmatning.
  • Utlösta jobb kör uppgifter när de utlöses. Utlösare är:
    • Tidsbaserade utlösare som kör jobb enligt ett angivet schema.
    • Filbaserade utlösare som kör jobb när filer hamnar på en angiven plats.
    • Andra utlösare som REST API-anrop, körning av Azure Databricks CLI-kommandon eller klicka på knappen Kör nu i arbetsytans användargränssnitt.

För inkrementella batcharbetsbelastningar konfigurerar du dina jobb med AvailableNow utlösarläget enligt följande:

Python

(df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(availableNow=True)
  .toTable("table_name")
)

Scala

import org.apache.spark.sql.streaming.Trigger

df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(Trigger.AvailableNow)
  .toTable("table_name")

För strömningsarbetsbelastningar är processingTime ="500ms"standardutlösarintervallet . I följande exempel visas hur du bearbetar en mikrobatch var femte sekund:

Python

(df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(processingTime="5 seconds")
  .toTable("table_name")
)

Scala

import org.apache.spark.sql.streaming.Trigger

df.writeStream
  .option("checkpointLocation", <checkpoint-path>)
  .trigger(Trigger.ProcessingTime, "5 seconds")
  .toTable("table_name")

Viktigt!

Serverlösa jobb stöder inte Scala, kontinuerligt läge eller tidsbaserade utlösarintervall för strukturerad direktuppspelning. Använd klassiska jobb om du behöver inmatningssemantik i nära realtid.

Inmatning med Delta Live Tables

På samma sätt som Jobs kan Delta Live Tables-pipelines köras i antingen utlöst eller kontinuerligt läge. För nästan realtidsströmningssemantik med strömmande tabeller, använd kontinuerligt läge.

Använd strömningstabeller för att konfigurera strömmande eller inkrementell batchinmatning från molnobjektlagring, Apache Kafka, Amazon Kinesis, Google Pub/Sub eller Apache Pulsar.

LakeFlow Connect använder Delta Live Tables för att konfigurera inmatningspipelines från anslutna system. Se LakeFlow Connect.

Materialiserade vyer garanterar åtgärdssemantik som motsvarar batcharbetsbelastningar, men kan optimera många åtgärder för att beräkna resultat stegvis. Se Stegvis uppdatering för materialiserade vyer.

Inmatning med Databricks SQL

Du kan använda strömmande tabeller för att konfigurera inkrementell batchinmatning från molnobjektlagring, Apache Kafka, Amazon Kinesis, Google Pub/Sub eller Apache Pulsar.

Du kan använda materialiserade vyer för att konfigurera inkrementell batchbearbetning från Delta-källor. Se Inkrementell uppdatering för materialiserade vyer.

COPY INTO innehåller välbekant SQL-syntax för inkrementell batchbearbetning för datafiler i molnobjektlagring. COPY INTO beteende liknar mönster som stöds av strömmande tabeller för lagring av molnobjekt, men inte alla standardinställningar är likvärdiga för alla filformat som stöds.