Streamen met serverloze rekenkracht

Op deze pagina wordt beschreven hoe u de juiste configuratie kiest voor serverloze streamingworkloads op Azure Databricks, waaronder continue pijplijnen, incrementele opname en beheerde connectors. Het kiezen van de juiste configuratie is afhankelijk van de bron-, shape- en latentiebehoeften van de stream.

Wat telt als een streamingworkload

Een streamingworkload leest niet-gebonden gegevens uit een bron (zoals opslag van cloudobjecten, een berichtenbus of een wijzigingenfeed) en schrijft stapsgewijs naar een sink. Azure Databricks ondersteunt de volgende patronen van streaming-workloads:

  • Doorlopend: Een pijplijn die zonder onderbreking draait en nieuwe data verwerkt zodra deze binnenkomt, voor workloads met vernieuwingseisen gemeten in seconden of minuten.
  • Real-time: Een continue pijplijn die records verwerkt met een latentie van minder dan een seconde voor ondersteunde operationele workloads. Op serverless is real-time modus beschikbaar in Lakeflow pipelines. Real-time modus in Structured Streaming vereist klassieke compute.
  • Incrementeel (ook wel triggergestuurd genoemd): Een pijplijn die volgens een planning of door een trigger wordt uitgevoerd, alle gegevens verwerkt die sinds de laatste uitvoering zijn binnengekomen, en stopt. Latentie wordt in minuten gemeten.

Sommige workloads lijken streamingpijplijnen te zijn, maar zijn technisch geen pijplijnen. Voorbeelden hiervan zijn een service waarin een websocket is geopend om te luisteren naar gebeurtenissen, een chattoepassing die een permanente verbinding per gebruiker onderhoudt of een webhookontvanger die binnenkomende HTTP-aanvragen verwerkt. Dit zijn toepassingen, geen streaming-pijplijnen. Zie Workloads die geen streamingpijplijnen zijn voor de juiste serverloze optie voor deze workloads.

De juiste streamingconfiguratie kiezen

In deze tabel worden gebruiksvoorbeelden toegewezen aan de serverloze configuraties die het beste bij deze configuraties passen. De secties die op deze pagina volgen, bevatten meer informatie over deze aanbevelingen.

Gebruiksituatie Aanbevolen configuratie Waarom
Continue streaming ETL of transformaties met lage latentie Lakeflow-pijplijnen in continue modus Continue modus is ontworpen voor permanent actieve streams. Stream pipelining voert microbatches gelijktijdig uit, waardoor de doorvoer en latentie worden verbeterd. De beheerde status zorgt ervoor dat herstel automatisch wordt uitgevoerd.
Operationele verwerking die een latentie van minder dan een seconde vereist. Real-time modus in Lakeflow-pijplijnen op serverless compute Real-time modus verwerkt records zodra ze binnenkomen binnen langlopende batches. Controleer de runtime, bron, sink en operator-eisen.
Incrementele ingestie uit cloudopslag Gebruik Auto Loader binnen Lakeflow-pijplijnen (voor lage latency) of in een serverless job met Trigger.AvailableNow() (als hogere latentie acceptabel is). Auto Loader houdt nieuwe bestanden efficiënt bij. Trigger.AvailableNow() verwerkt de backlog en wordt vervolgens afgesloten, wat past bij een gepland of on-demand uitvoeringsritme.
Beheerde ingestie vanuit SaaS-bronnen of CDC uit databases Lakeflow Connect beheerde connectoren Volledig beheerde connectors met serverloze opnamepijplijnen. Er is geen code vereist voor ondersteunde bronnen.
SQL streamen via Delta-tabellen Streamingtabellen SQL-native incrementele verwerking voor append-georiënteerde bronnen, met beheerde pijplijnen en verversing.
Periodieke microbatchverwerking in een notebook of taak Serverloze taak met Trigger.AvailableNow() Kostenefficiënt wanneer versheid op minuutniveau voldoende is. Serverloze berekeningen worden snel gestart en afgesloten wanneer de batch is voltooid.

Doorlopend streamen

Gebruik Lakeflow-pijplijnen in continue modus voor continue streaming op serverloze berekeningen. De pijplijn blijft actief, verwerkt records zodra ze binnenkomen en herstelt automatisch van fouten.

Ga als volgende te werk om een continue stroom te configureren:

Tip

Stream pipelining is standaard ingeschakeld in serverloze Lakeflow-pijplijnen. Microbatches worden parallel uitgevoerd in plaats van sequentieel, wat de doorvoer voor invoerintensieve streams verbetert.

Triggers voor gestructureerd streamen op basis van tijd, zoals Trigger.ProcessingTime(interval) enTrigger.Continuous(interval), zijn niet beschikbaar in serverloze notebooks of taken. Gebruik Lakeflow-pijplijnen in continue modus voor het always-on-patroon. Zie Beperkingen voor streaming. Trigger.Once() wordt ondersteund maar is verouderd. Migreer bestaande queries naar Trigger.AvailableNow().

real-time streaming

Real-time modus in Lakeflow pipelines ondersteunt operationele workloads met een latentie van minder dan een seconde, zoals fraudedetectie en realtime personalisatie. Het is beschikbaar voor klassieke en serverless-computeomgevingen. Configureer een updateflow met een ondersteunde sink en bekijk de runtime- en operatorvereisten. Realtime updateflows kunnen niet naar Delta Lake-tabellen schrijven.

Continue pijplijnmodus en real-time modus voldoen aan verschillende latentievereisten. Het inschakelen van continue modus alleen activeert real-time modus niet.

Incrementele en geactiveerde streaming

Voor incrementeel streamen voert u Structured Streaming uit met Trigger.AvailableNow() een serverloze taak. Elke uitvoering verwerkt alle gegevens die sinds het laatste controlepunt zijn binnengekomen en wordt daarna beëindigd.

Een serverloze taak configureren met incrementele streaming:

In het volgende voorbeeld worden nieuwe bestanden uit cloudopslag (source_path) gelezen met Auto Loader, worden alle gegevens verwerkt die beschikbaar zijn op het moment van de uitvoering en naar een Delta-tabel geschreven:

(spark.readStream
   .format("cloudFiles")
   .option("cloudFiles.format", "json")
   .option("cloudFiles.maxFilesPerTrigger", 1000)
   .load(source_path)
   .writeStream
   .trigger(availableNow=True)
   .option("checkpointLocation", checkpoint_path)
   .toTable("catalog.schema.target_table"))

Een geplande Trigger.AvailableNow() taak is het meest rendabele streamingpatroon op serverloze berekeningen wanneer latentie op minuutniveau acceptabel is. Compute begint in seconden, voert de batch uit en wordt afgesloten.

Beheerde opname

Als de bron een SaaS-toepassing of een operationele database is, gebruikt u Lakeflow Connect in plaats van gestructureerde streaming-code te schrijven. Lakeflow Connect voert serverloze opnamepijplijnen uit voor connectors zoals Salesforce, Workday, SQL Server CDC en PostgreSQL CDC. Zie concepten van Lakeflow Connect-connectors.

Dit pad is het juiste antwoord wanneer:

  • Er bestaat een connector voor uw bron.
  • U wilt een beheerde pijplijn in plaats van aangepaste code.
  • U hebt schema-evolutie, data-lineage en monitoring standaard nodig.

Incrementele gegevensverwerking die door SQL wordt beheerd

Voor SQL-first-teams gebruikt u streamingtabellen voor sql-systeemeigen streamingworkloads. U kunt streamingtabellen definiëren in Lakeflow-pijplijnen of als zelfstandige streamingtabellen.

Voor zelfstandige streamingtabellen die zijn gemaakt met de CREATE OR REFRESH STREAMING TABLE SQL-instructie, begint de eerste gegevensvernieuwing en de populatie onmiddellijk. Er wordt automatisch een toegewezen serverloze pijplijn gemaakt en beheerd door het systeem voor elke streamingtabel.

Als u queryresultaten met batchsemantiek en beheerd verversen nodig hebt, gebruik dan in plaats daarvan gematerialiseerde weergaven. Bekijk gematerialiseerde weergaven.

Workloads die geen streaming-pipelines zijn

Een workload die een langdurige verbinding moet bevatten, op een poort moet luisteren of moet reageren op binnenkomende HTTP-aanvragen, is geen streamingpijplijn; het is een toepassing. Voer deze workloads niet uit op een serverloze taak. De juiste Databricks-opties zijn:

  • Langlopende services die een permanente verbinding of EEN HTTP-eindpunt nodig hebben: bouw de service met Databricks-apps. Databricks Apps is het serverloze platform voor het hosten van aangepaste toepassingen op Azure Databricks, waaronder FastAPI-, Flask-, Streamlit-, Dash-, Gradio-, Node.js- en Shiny-apps. Zie Databricks-apps.
  • Binnenkomende webhooks of gebeurtenislisteners: maak een HTTP-eindpunt beschikbaar in Databricks-apps of beëindig de webhook in een externe service en schrijf gebeurtenissen naar de cloudopslag of een berichtenbus en haal deze vervolgens op met een serverloze streamingpijplijn.
  • Aangepaste token- of referentieuitwisseling: gebruik service-principals met OAuth of roep de Databricks REST API's aan vanuit een app. Streamingpijplijnen bevatten geen sessies per gebruiker of aangepaste tokenstatus.

Als u evalueert of uw workload past bij een streaming-pijplijn, vraagt u het volgende:

  • Leest de workload uit een onbegrensde gegevensbron en schrijft deze weg naar een bestemming? Zo ja, dan is het een streaming-pijplijn.
  • Moet de workload een verbinding met een cliënt openhouden? Zo ja, dan is het een toepassing; Databricks-apps gebruiken.

Limitations

De volgende streamingbeperkingen gelden voor serverless notebooks en jobs. Voor pijplijnvereisten en beperkingen, zie Configureer een serverloze pijplijn en Gebruik real-time mode in Lakeflow-pijpleidingen.

  • Triggers voor gestructureerd streamen op basis van tijd (Trigger.ProcessingTime(interval) en Trigger.Continuous(interval)) worden niet ondersteund in serverloze notebooks of taken. Gebruik Lakeflow-pijplijnen in continue modus voor always-on-streams of Trigger.AvailableNow() voor geactiveerde uitvoeringen. Zie Beperkingen voor streaming.
  • Streamingquery’s zonder een expliciete trigger falen met INFINITE_STREAMING_TRIGGER_NOT_SUPPORTED. Apache Spark is standaard ingesteld op Trigger.ProcessingTime("0 seconds"), wat niet wordt ondersteund op serverloze compute. Stel Trigger.AvailableNow() altijd in op elke streamingquery, of gebruik Lakeflow-pijplijnen in continue modus.
  • Alle beperkingen voor streaming in de standaardtoegangsmodus zijn ook van toepassing op serverloze berekeningen. Zie Beperkingen voor streaming.

Volgende stappen