Wat zijn Lakeflow-pijplijnen?

Lakeflow-pijplijnen bieden een declaratief framework voor het bouwen van batch- en streaminggegevenspijplijnen in SQL en Python. Hun kernconcepten zijn pijplijnen, flows, streamingtabellen, gematerialiseerde weergaven en sinks, die samenwerken om gegevens te verwerken met automatische orkestratie en incrementele updates.

Lakeflow-pipelines breiden Apache Spark™ Declarative Pipelines (SDP) uit. Zie Apache Spark-declaratieve pijplijnen voor meer informatie over SDP en hoe deze zich verhoudt tot Lakeflow-pijplijnen.

Tip

Nieuw met pijpleidingen? Begin met Hoe je Lakeflow-pijpleidingen gebruikt om te begrijpen hoe je pijpleidingen gedurende hun levenscyclus gebruikt, en waarom, met links naar de taken in elke fase.

Note

Voor Lakeflow-pijplijnen is het Premium-abonnement vereist. Neem contact op met uw Databricks-accountteam voor meer informatie.

Wat zijn de voordelen van pijplijnen?

In tegenstelling tot het ontwikkelen van data-engineeringprocessen met de Apache Spark- en Spark Structured Streaming-API's op Databricks Runtime met behulp van handmatige orkestratie via Lakeflow Jobs, biedt het declaratieve karakter van pijplijnen de volgende voordelen:

  • Automatische indeling: pijplijnen voeren verwerkingsstappen ('stromen' genoemd) uit in de juiste volgorde met maximale parallelle uitvoering en probeer tijdelijke fouten geleidelijk opnieuw, van de Spark-taak naar de stroom, naar de hele pijplijn.
  • Declaratieve verwerking: declaratieve functies verminderen honderden regels met handmatige Spark- en Structured Streaming-code tot enkele. Met de AUTO CDC-API worden CDC-gebeurtenissen (Change Data Capture) verwerkt, inclusief SCD-type 1 en Type 2, zonder handmatige code voor out-of-ordergebeurtenissen of streamingconcepten zoals watermerken.
  • Incrementele verwerking: Met een incrementele verwerkingsengine blijven gerealiseerde weergaven actueel: u schrijft transformatielogica met batch-semantiek en de engine verwerkt zo mogelijk alleen nieuwe of gewijzigde brongegevens.

Belangrijke concepten

In het onderstaande diagram ziet u de belangrijkste concepten van pijplijnen.

Een diagram dat laat zien hoe de kernconcepten van pijplijnen zich op een zeer hoog niveau met elkaar verhouden

Datasets

Een pijplijn produceert drie typen gegevenssets, elk met verschillende semantiek voor verwerking:

Gegevenssettype Hoe records worden verwerkt
Tabel voor streaming Elk record wordt precies één keer verwerkt, ervan uitgaande dat de bron alleen wordt aangevuld. Streamingtabellen zijn geschikt voor opname en incrementele verwerking van continu groeiende gegevens.
Gerealiseerde weergave Resultaten worden indien nodig opnieuw gecomputeerd om de huidige status van de gegevens weer te geven. Gematerialiseerde weergaven zijn geschikt voor transformaties, aggregaties of het vooraf berekenen van resultaten die door meerdere onderliggende datasets worden gebruikt.
View Geëvalueerd op aanvraag, niet persistent. Gebruik weergaven voor tussenliggende transformaties en controles die niet naar een catalogus hoeven te worden gepubliceerd.

Een streamingtabel is een vorm van beheerde Unity Catalog-tabel die ook een streamingdoel is. Een streamingtabel kan een of meer streamingstromen (Toevoegen, AUTO CDC) bevatten die erin zijn geschreven. U kunt streamingstromen expliciet en afzonderlijk definiëren van de doelstreamingtabel, of impliciet als onderdeel van een definitie van een streamingtabel.

Een gerealiseerde weergave is ook een vorm van beheerde tabel in Unity Catalog en is een batchdoel. Een gematerialiseerde weergave kan een of meer gematerialiseerde weergave-flows bevatten die erin zijn opgenomen. Gerealiseerde weergaven verschillen van streamingtabellen omdat u de stromen altijd impliciet definieert als onderdeel van de gerealiseerde weergavedefinitie.

Zie streamingtabellen en gematerialiseerde weergaven voor details.

Wanneer u weergaven, gematerialiseerde weergaven en streamingtabellen gebruikt

Wanneer u pijplijnquery's implementeert, kiest u het gegevenssettype dat het beste past bij uw use-case.

Overweeg een weergave te gebruiken voor:

  • Een grote of complexe query opsplitsen in eenvoudiger te beheren query's.
  • Valideer tussenliggende resultaten met behulp van verwachtingen.
  • Verlaag de opslag- en rekenkosten voor resultaten die u niet hoeft te behouden. Omdat tabellen worden gematerialiseerd, zijn extra reken- en opslagbronnen vereist.

Overweeg om een gerealiseerde weergave te gebruiken wanneer:

  • Meerdere downstreamquery's gebruiken de tabel. Omdat de resultaten van een gerealiseerde weergave in de cache worden opgeslagen, lezen downstreamquery's de vooraf samengestelde resultaten in plaats van de query opnieuw te berekenen voor elke toegang.
  • Andere pijplijnen, taken of queries gebruiken de tabel. Omdat een gerealiseerde weergave wordt gerealiseerd in een Unity Catalog-tabel, kunnen consumenten buiten de pijplijn die deze definieert, er query's op uitvoeren. Weergaven worden niet gematerialiseerd, dus u kunt ze alleen binnen dezelfde pipeline gebruiken.
  • U wilt de resultaten van een query controleren tijdens de ontwikkeling. Omdat een gerealiseerde weergave wordt gerealiseerd en kan worden opgevraagd buiten de pijplijn, kunt u tijdens de ontwikkeling de juistheid van berekeningen valideren. Na het valideren converteert u query's waarvoor geen materialisatie is vereist in weergaven.
  • Uw query voert aggregaties of joins uit, of de brongegevens kunnen worden gewijzigd vanwege updates en verwijderingen in plaats van alleen te groeien. Een gerealiseerde weergave houdt de resultaten consistent met de huidige status van de brongegevens, terwijl een streamingtabel is ontworpen voor alleen toevoegbronnen en elke record één keer verwerkt.

Overweeg het gebruik van een streamingtabel wanneer:

  • Een query wordt gedefinieerd op basis van een gegevensbron die continu of incrementeel groeit.
  • Queryresultaten moeten incrementeel worden berekend.
  • De pijplijn heeft een hoge doorvoer en lage latentie nodig.

Note

Streamingtabellen worden altijd gedefinieerd op basis van streamingbronnen. U kunt ook streamingbronnen met AUTO CDC ... INTO gebruiken om updates van CDC-feeds toe te passen. Zie de AUTO CDC-API's: Het vastleggen van wijzigingsgegevens vereenvoudigen met pijplijnen.

Flows

Een stroom is het basisconcept voor gegevensverwerking in pijplijnen en ondersteunt zowel streaming- als batch-semantiek. Een stroom leest gegevens uit een bron, past door de gebruiker gedefinieerde verwerkingslogica toe en schrijft het resultaat naar een doel. Pijplijnen delen hetzelfde type streamingstroom (toevoegen, bijwerken, voltooien) als Spark Structured Streaming. (Op dit moment worden alleen de stromen Toevoegen en Bijwerken weergegeven.) Zie de uitvoermodi in Structured Streaming voor meer informatie.

Pijplijnen bieden ook extra stroomtypen:

  • AUTO CDC is een unieke streamingstroom in Lakeflow-pijplijnen die CDC-gebeurtenissen buiten volgorde afhandelt en zowel SCD-type 1 als SCD-type 2 ondersteunt. Auto CDC is niet beschikbaar in SDP.
  • Gerealiseerde weergave is een batchstroom in pijplijnen die alleen nieuwe gegevens en wijzigingen in de brontabellen verwerkt, indien mogelijk.

Zie Incrementeel gegevens laden en verwerken met Lakeflow-pijplijnstromen voor meer informatie.

Sinks

Een sink is een streamingdoel voor een pijplijn en ondersteunt Delta-tabellen, Apache Kafka-onderwerpen, Azure EventHubs-onderwerpen en aangepaste Python-gegevensbronnen. Een sink kan een of meer streamingstromen (toevoegen, bijwerken) bevatten die erin zijn geschreven.

Zie Sinks in Lakeflow-pijplijnen voor meer informatie.

Pipelines

Een pijplijn is de eenheid van ontwikkeling en uitvoering en is de container voor de stromen, streamingtabellen, gerealiseerde weergaven en sinks die u definieert. U bouwt een pijplijn door deze objecten in de broncode van de pijplijn te definiëren en vervolgens de pijplijn uit te voeren. Terwijl uw pijplijn wordt uitgevoerd, worden de afhankelijkheden van uw gedefinieerde objecten geanalyseerd en de volgorde van uitvoering en parallelle uitvoering automatisch ingedeeld.

Zie Wat zijn pijplijnen? voor meer informatie.

U kunt ook zelfstandige gerealiseerde weergaven en streamingtabellen buiten een Lakeflow-pijplijn definiëren, waarbij Azure Databricks de pijplijn voor u beheert. Zie Zelfstandige pijplijnen versus Lakeflow-pijplijnen om de twee benaderingen te vergelijken.

Een pijplijn draait in getriggerde of continue modus, die bepaalt of deze beschikbare data ververst en tabellen stopt of vers houdt zodra nieuwe data binnenkomt. Om de twee modi te vergelijken, zie Getriggerde versus continue pijplijnmodus.

Gegevensopname

Pijplijnen ondersteunen alle gegevensbronnen die beschikbaar zijn in Azure Databricks. Databricks raadt het gebruik van streamingtabellen aan voor de meeste toepassingen voor data-inname. Voor bestanden in cloud-objectopslag zorgt Auto Loader voor incrementeel en idempotent laden. Voor streaminggegevens kunnen pijplijnen rechtstreeks vanuit berichtenbussen zoals Apache Kafka, Azure Event Hubs, Amazon Kinesis en Google Pub/Sub opnemen. Zie Gegevens laden in pijplijnen.

Gegevenskwaliteit

Verwachtingen zijn optionele componenten voor gegevenssets die gegevens valideren terwijl deze door de pijplijn stromen. U definieert een verwachting als een SQL-booleaanse beperking en geeft aan wat er gebeurt wanneer een record mislukt: waarschuwen, de record verwijderen of de update mislukken. Zie Gegevenskwaliteit beheren met pipelineverwachtingen.

Delta-integratie

Alle tabellen die door pijplijnen worden gemaakt en beheerd, zijn Delta-tabellen. Ze hebben dezelfde garanties als Delta Lake, inclusief ACID-transacties, time travel en schemahandhaving. Pijplijnen voegen extra tabeleigenschappen toe en voeren automatisch onderhoud uit met behulp van voorspellende optimalisatie, inclusief OPTIMIZE en VACUUM bewerkingen. Bekijk wat is Delta Lake in Azure Databricks?

Aanvullende bronnen