Delen via


Streaming en incrementele opname

Azure Databricks maakt gebruik van Apache Spark Structured Streaming om talloze producten te ondersteunen die zijn gekoppeld aan opnameworkloads, waaronder:

  • Automatisch laden
  • COPY INTO
  • Delta Live Tables-pijplijnen
  • Gematerialiseerde weergaven en streamingtabellen in Databricks SQL

In dit artikel worden enkele van de verschillen tussen streaming en incrementele batchverwerkingssemantiek besproken en vindt u een algemeen overzicht van het configureren van opnameworkloads voor de gewenste semantiek in Databricks.

Wat is het verschil tussen streaming en incrementele batchopname?

Mogelijke werkstroomconfiguraties voor opname variƫren van bijna realtime verwerking tot onregelmatige incrementele batchverwerking. Beide patronen maken gebruik van Apache Spark Structured Streaming om incrementele verwerking mogelijk te maken, maar hebben verschillende semantiek. Ter vereenvoudiging verwijst dit artikel naar bijna realtime opname als streamingopname en meer onregelmatige incrementele verwerking als incrementele opname in incrementele batchopname.

Stroomopname

Streaming, in de context van gegevensopname en tabelupdates, verwijst naar bijna realtime gegevensverwerking waarbij Azure Databricks records opneemt van bron naar sink in microbatches met behulp van always-on-infrastructuur. Een streamingworkload neemt voortdurend updates van geconfigureerde gegevensbronnen op, tenzij er een fout optreedt die de opname stopt.

Incrementele batchopname

Incrementele batchverwerking verwijst naar een patroon waarbij alle nieuwe records worden verwerkt vanuit een gegevensbron in een korte taak. Incrementele batchopname vindt vaak plaats volgens een schema, maar kan ook handmatig worden geactiveerd of op basis van bestands aankomst.

Incrementele batchopname verschilt van batchopname omdat er automatisch nieuwe records in de gegevensbron worden gedetecteerd en records worden genegeerd die al zijn opgenomen.

Opname met taken

Met Databricks-taken kunt u werkstromen organiseren en taken plannen die notebooks, bibliotheken, Delta Live Tables-pijplijnen en Databricks SQL-query's bevatten.

Notitie

U kunt alle Azure Databricks-rekentypen en taaktypen gebruiken om incrementele batchopname te configureren. Streamingopname wordt alleen ondersteund in productie op klassieke taken berekenen en Delta Live Tables.

Taken hebben twee primaire bewerkingsmodi:

  • Doorlopende taken worden automatisch opnieuw geprobeerd als er een fout optreedt. Deze modus is bedoeld voor streamingopname.
  • Geactiveerde taken voeren taken uit wanneer ze worden geactiveerd. Triggers zijn onder andere:
    • Tijdgebaseerde triggers waarmee taken volgens een opgegeven planning worden uitgevoerd.
    • Op bestanden gebaseerde triggers waarmee taken worden uitgevoerd wanneer bestanden op een opgegeven locatie terechtkomen.
    • Andere triggers, zoals REST API-aanroepen, uitvoering van Azure Databricks CLI-opdrachten of klikken op de knop Nu uitvoeren in de gebruikersinterface van de werkruimte.

Voor incrementele batchworkloads configureert u uw taken als volgt met behulp van de AvailableNow triggermodus:

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")

Voor streamingworkloads is processingTime ="500ms"het standaardtriggerinterval . In het volgende voorbeeld ziet u hoe u elke 5 seconden een microbatch verwerkt:

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")

Belangrijk

Serverloze taken bieden geen ondersteuning voor scala-, continue modus- of tijdsgebonden triggerintervallen voor gestructureerd streamen. Gebruik klassieke taken als u vrijwel realtime semantiek voor opname nodig hebt.

Gegevensinvoer met Delta Live Tables

Net als bij Jobs kunnen Delta Live Tables-pijplijnen in een geactiveerde of continue modus worden uitgevoerd. Gebruik continue modus voor bijna realtime streaming-semantiek met streamingtabellen.

Gebruik streamingtabellen om streaming- of incrementele batchopname te configureren vanuit cloudobjectopslag, Apache Kafka, Amazon Kinesis, Google Pub/Sub of Apache Pulsar.

LakeFlow Connect maakt gebruik van Delta Live Tables om opnamepijplijnen van verbonden systemen te configureren. Zie LakeFlow Connect.

Gerealiseerde weergaven garanderen een semantiek die equivalent is aan die van batchverwerking, maar kunnen veel bewerkingen optimaliseren om de resultaten incrementeel te berekenen. Zie Incrementele vernieuwing voor gematerialiseerde weergaven.

Opname met Databricks SQL

U kunt streaming-tabellen gebruiken om incrementele batchopname te configureren vanuit cloudobjectopslag, Apache Kafka, Amazon Kinesis, Google Pub/Sub of Apache Pulsar.

U kunt gematerialiseerde weergaven gebruiken om incrementele batchverwerking vanuit Delta-bronnen te configureren. Zie Incrementeel vernieuwen voor gerealiseerde weergaven.

COPY INTO biedt vertrouwde SQL-syntaxis voor incrementele batchverwerking voor gegevensbestanden in cloudobjectopslag. COPY INTO gedrag lijkt op patronen die worden ondersteund door streamingtabellen voor opslag van cloudobjecten, maar niet alle standaardinstellingen zijn equivalent voor alle ondersteunde bestandsindelingen.