Les 2 van 7 · 50 min · Inclusief lab

Ingestie met Auto Loader en Lakeflow Connect

In deze les ga je

  • Per brontype kiezen tussen Auto Loader, Lakeflow Connect of een streamingbron
  • Uitleggen hoe de checkpoint exactly-once bestandsverwerking geeft
  • Een landingszone ontwerpen als contract met een leverancier
  • Vooraf bepalen wat elke schemawijziging doet
Ga naar de kenniscontrole

Haal data één keer binnen, en maar één keer

Ingestie lijkt eenvoudig: bestanden komen binnen en je leest ze. Dan stuurt een bron hetzelfde bestand twee keer, voegt op een vrijdag een kolom toe of valt drie dagen stil en stuurt maandag alles. Een goed ingestieontwerp overleeft alle drie zonder dat er iemand achter het toetsenbord zit.

In deze les kiezen we de juiste tool per brontype, leggen we uit hoe Auto Loader bestanden bijhoudt en stellen we regels op voor schemawijzigingen en landingszones. Transformatielogica behandelen we niet. Die hoort in silver en les 3 behandelt haar.

Kies de tool op brontype

Databricks biedt twee beheerde routes naar de lakehouse.

BronToolWaarom
Bestanden die in cloudopslag of een volume landen (JSON, CSV, Parquet, Avro, tekst)Auto LoaderIncrementele verwerking van bestanden met exactly-once en schemabeheer
Databases, SaaS-applicaties, zakelijke bestandsbronnenLakeflow ConnectBeheerde connectoren die beheerde, incrementele ingestiepipelines maken
Berichtenbussen en eventstromenStructured Streaming-bron of een streamingconnectorContinu lezen met checkpoints

Lakeflow Connect is de beheerde ingestieservice. De documentatie groepeert connectoren op brontype: databaseconnectoren met change data capture (bijvoorbeeld MySQL, PostgreSQL en SQL Server), querygebaseerde databaseconnectoren, SaaS-connectoren (bijvoorbeeld Salesforce, HubSpot, Jira en Workday), bestandsconnectoren (bijvoorbeeld Google Drive en SharePoint), streamingconnectoren en community- of eigen connectoren. Pipelines worden beheerd door Unity Catalog en draaien op serverless compute, en na de eerste volledige load lezen ze alleen wijzigingen. De documentatie zegt dat connectoren in verschillende releasestatussen zitten en verwijst naar een pagina over releasetypen. Controleer dus de status van de exacte connector voor je een productiedatum belooft.

Gebruik de beheerde connector als er een bestaat voor je bron. Je hoeft dan geen eigen extractiecode te schrijven en te beheren, het onderdeel van een pipeline dat het vaakst breekt.

Hoe Auto Loader werkt

Auto Loader is een Structured Streaming-bron met de naam cloudFiles. Gegeven een invoerlocatie verwerkt hij nieuwe bestanden zodra ze binnenkomen. Drie mechanismen tellen.

Checkpoint. Auto Loader bewaart metadata over de ontdekte bestanden in een RocksDB-key-valuestore op de checkpointlocatie. Dat geeft je exactly-once-verwerking: na een storing hervat de stream vanuit de bewaarde state en leest hij al verwerkte bestanden niet opnieuw. Verwijder of deel een checkpoint nooit achteloos. Een nieuwe checkpoint betekent alles opnieuw lezen.

Modus voor bestandsdetectie. Directory listing is de standaard. De bestandsnotificatiemodus met file events voorkomt dat een grote map wordt afgelopen en verlaagt cloudkosten. De documentatie zegt dat Databricks de bestandsnotificatiemodus met file events aanbeveelt voor de meeste workloads. Voor een landingsmap met een bescheiden aantal bestanden is de standaard prima om mee te beginnen.

Schemabeheer. Auto Loader kan het schema afleiden, schemadrift detecteren, je waarschuwen bij schemawijzigingen en data redden die anders wegvalt. In Lakeflow-pipelines stel je zelf geen schemalocatie of checkpointlocatie in, omdat de pipeline ze beheert.

Illustratie

python
# Schematische Auto Loader-lees- en schrijfactie. Optienamen kunnen per runtimeversie veranderen,
# controleer dus de Auto Loader-optiereferentie voor gebruik.
df = (
    spark.readStream
         .format("cloudFiles")
         .option("cloudFiles.format", "json")
         .option("cloudFiles.schemaLocation", "/Volumes/dev_sales/landing/_schemas/orders")
         .load("/Volumes/dev_sales/landing/orders/")        # het landingsvolume
)
 
(
    df.writeStream
      .option("checkpointLocation", "/Volumes/dev_sales/landing/_checkpoints/orders")
      .trigger(availableNow=True)                           # verwerk wat er ligt en stop dan
      .toTable("dev_sales.bronze.orders_raw")
)

De availableNow-trigger is een goede standaard voor geplande ingestie: hij verwerkt alles wat is binnengekomen en stopt dan, zodat de job alleen compute kost terwijl hij werkt. Draai voor lage latency de stream continu en accepteer de hogere kosten.

Landingszones als contract

Behandel de plek waar bestanden binnenkomen als een contract met de leverancier.

  • Eén volume of map per bron en entiteit. Gemengde formaten in één map laten schema-inferentie raden.
  • Onveranderlijke bestanden. Een leverancier die een bestand overschrijft, breekt de exactly-once-logica. Spreek nieuwe bestandsnamen af voor elke levering, bijvoorbeeld met een tijdstempel.
  • Schrijven voor de leverancier, lezen voor engineers. De ingestie-identiteit leest de landingszone. Leveranciers schrijven erin met een afgebakende identiteit en kunnen de bestanden van andere leveranciers niet lezen.
  • Privénetwerkpaden. Storage accounts krijgen private endpoints en publieke toegang blijft uit, zoals in onze delivery standards.
  • Een bewaarregel. Bepaal hoe lang ruwe bestanden blijven. Bronze mag de data bevatten, maar bestanden in landing zijn nog steeds persoonsgegevens als de inhoud dat is.

Schemawijzigingen zonder paniek

Bronnen veranderen. Bepaal vooraf wat elke soort wijziging doet.

WijzigingAanbevolen gedrag
Nieuwe kolomVastleggen, met een alert. Schema-evolutie of de gerescue-datakolom bewaart het record
TypewijzigingBewaar de ruwe waarde in bronze, markeer hem en herstel de cast in silver
Verwijderde kolomDe waarde wordt null. Expectations in silver (les 3) bepalen of dat acceptabel is
Beschadigd bestandZet het bestand in quarantaine, ga door met de run en waarschuw de eigenaar

Het principe uit les 1 helpt hier: bronze blijft los, silver dwingt af. Een bron die een type wijzigt, breekt dan een silver-expectation die dat meldt, en niet je ingestie.

Metadata die je altijd toevoegt

Voeg laadmetadata toe in de bronze-laag: het bronbestandspad, het laadtijdstip en een batch- of run-identificatie. Het kost vrijwel niets en het is het eerste wat je nodig hebt als iemand vraagt: "waar komt deze rij vandaan?".

Veelgemaakte fouten

  • Eigen incrementele logica schrijven terwijl er een beheerde connector bestaat.
  • Eén checkpoint delen tussen twee streams.
  • Geleverde bestanden overschrijven en je afvragen waarom er data ontbreekt.
  • Het schema ongemerkt laten veranderen zonder alert.
  • Full refresh als gewoonte. Het verbergt een ontwerpprobleem en kost bij elke run compute.

Samenvatting

Gebruik Lakeflow Connect voor databases en SaaS-bronnen, Auto Loader voor bestanden. Behandel de landingszone als contract met onveranderlijke bestanden en afgebakende identiteiten. Houd bronze los, voeg laadmetadata toe en bepaal vooraf wat elke schemawijziging doet.

Volgende les: declaratieve pipelines, waar ingestie en transformatie samenkomen.

Het idee in één schema

Twee beheerde routes naar bronze

  1. Bestanden in een volumeAuto Loader
  2. Databases en SaaSLakeflow Connect
  3. Checkpoint en schemabeheer
  4. Bronze-tabelMet laadmetadata

Kenniscontrole

Beantwoord elke vraag. Je ziet meteen de reden achter elk antwoord.

0 van 3 beantwoord

  1. Vraag 1 van 3Wat geeft Auto Loader exactly-once bestandsverwerking?
  2. Vraag 2 van 3Een leverancier overschrijft een bestaand bestand. Wat is het risico?
  3. Vraag 3 van 3Wanneer gebruik je een Lakeflow Connect-connector?

Praktisch lab

Doel. Lees batches JSON-bestanden in bronze in met Auto Loader en zie dat elk bestand één keer wordt verwerkt.

Waar je het draait

Databricks Free Edition Draai dit lab in een gratis Databricks-workspace. Meld je aan met je eigen e-mailadres.

Haal Databricks Free Edition

Stappen

  1. Maak een volume voor landing, schema's en checkpoints in een schema waarin je mag schrijven.
  2. Schrijf in een notebook drie kleine JSON-bestanden naar de landingsmap, elk met een andere leverdatum in de naam.
  3. Pas de Auto Loader-listing uit de les aan op je paden en draai hem met de availableNow-trigger.
  4. Voeg een vierde bestand toe met één extra kolom. Draai opnieuw en bekijk wat er met de nieuwe kolom en het rijaantal gebeurt.
  5. Draai nog eens zonder nieuwe bestanden en bevestig dat er geen rijen bijkomen.

Verwacht resultaat

Elk bestand wordt één keer verwerkt. De nieuwe kolom wordt behandeld volgens de schema-instellingen die je koos en een tweede run zonder nieuwe bestanden voegt niets toe.

Verdiepen

Officiële documentatie en aanbevolen cursussen van de aanbieders.

Lees bij NexOps

Artikelen uit onze eigen projecten over hetzelfde onderwerp.

Bronnen

Laatst gecontroleerd 2026-11-11

We controleren elke bron aan de hand van de officiële documentatie. Producten veranderen, dus bevestig details daar voordat je bouwt.