Zum Inhalt springen

Auto Loader

Auto Loader ist die Databricks-Quelle für inkrementelle Datei-Ingestion aus S3, ADLS und GCS. Definition, Abgrenzung zu COPY INTO und typischer Einsatz.

Auto Loader ist ein Ladewerkzeug in Databricks, das neue Dateien in einem Cloud-Speicher (Dateiablage in der Cloud wie Amazon S3, Azure Data Lake Storage oder Google Cloud Storage) automatisch erkennt und in eine Delta-Tabelle (verwaltete Tabelle im Databricks-Lakehouse) übernimmt, ohne bereits geladene Dateien erneut zu lesen. Auto Loader merkt sich in einem Checkpoint (Fortschrittsprotokoll auf der Ablage), was schon verarbeitet wurde, und läuft entweder in festen Abständen oder dauerhaft mit.

Was ist Auto Loader?

Auto Loader ist eine Ladequelle innerhalb von Apache Spark (der Rechen-Engine hinter Databricks) und speziell für Dateien im Cloud-Speicher gebaut. Angesprochen wird die Quelle über den Format-Namen cloudFiles in einer Streaming-Abfrage (eine Abfrage, die kontinuierlich läuft und neue Daten laufend nachlädt). Die Abfrage liest neue Dateien aus einem Verzeichnis und schreibt sie in eine Zieltabelle. Auto Loader ist Teil der Databricks-Laufzeitumgebung und lässt sich auch in Lakeflow Spark Declarative Pipelines (dem früheren Delta Live Tables, einem Baukasten für deklarative Datenpipelines) als Quelle einhängen.

Für die Erkennung neuer Dateien bietet Auto Loader zwei Discovery-Modi. Directory Listing ist der Default und listet den Inhalt des Ziel-Verzeichnisses auf, um neue Dateien gegen den Checkpoint-Status abzugleichen. File Notification setzt cloud-native Event-Dienste ein (etwa AWS SQS, Azure Event Grid oder Google Pub/Sub), an die der Objektspeicher jede neue Datei meldet. File Notification skaliert besser bei sehr großen Verzeichnissen, verlangt aber zusätzliche Cloud-Ressourcen und Berechtigungen.

Den Fortschritt hält Auto Loader in einem Checkpoint-Verzeichnis fest. Jede bereits verarbeitete Datei wird dort vermerkt, sodass ein Neustart der Query die Datei überspringt. Diese Semantik ist exactly-once auf Datei-Ebene und ersetzt die selbstgebaute Buchhaltung, die eine manuelle Ingestion-Pipeline sonst pflegen müsste.

Für sich ändernde Datenstrukturen unterstützt Auto Loader Schema Inference und Schema Evolution. Beim ersten Lauf leitet der Reader das Schema aus einer Stichprobe von Dateien ab und legt es in einer Schema-Location ab. Für spätere Läufe stehen vier Evolutions-Modi zur Verfügung: addNewColumns (neue Spalten werden aufgenommen), rescue (unbekannte Werte landen in einer Rescue-Spalte als JSON), failOnNewColumns (die Query bricht ab) und none (Abweichungen werden ignoriert). Die Rescue-Spalte bleibt in jedem Modus als Auffangfeld für Typkonflikte verfügbar.

Abgrenzung: COPY INTO, Structured Streaming, Lakeflow

Auto Loader wird häufig mit benachbarten Databricks-Bausteinen für Ingestion und Pipelines verwechselt, weil sie sich funktional teilweise überlappen.

BegriffVerhältnis zu Auto Loader
COPY INTOSQL-Befehl für idempotente Batch-Ladungen aus Cloud-Speichern in eine Delta-Tabelle. Kein Streaming-Checkpoint zwischen Läufen; geeignet für begrenzte Datenmengen und einmalige Backfills.
Structured StreamingDas Streaming-Framework von Apache Spark. Auto Loader ist eine konkrete Quelle innerhalb dieses Frameworks, kein eigenes Framework.
Lakeflow Spark Declarative PipelinesDeklaratives Pipeline-Framework (früher Delta Live Tables). Auto Loader kann in einer solchen Pipeline als Quelle dienen; die Pipeline übernimmt Orchestrierung, Datenqualität und Deployment.
Lakeflow ConnectManaged-Konnektoren für Datenbanken und SaaS-Systeme (etwa Salesforce, Workday). Auto Loader zielt auf Dateien im Objektspeicher, Lakeflow Connect auf strukturierte Quellsysteme.
Zerobus IngestDirekter Push-Ingest von Anwendungen in Delta-Tabellen ohne Zwischen-Datei. Auto Loader setzt eine Datei im Cloud-Speicher voraus.

Auto Loader ist damit die Ingest-Schicht für den Fall, dass Rohdaten als Dateien im Cloud-Objektspeicher entstehen und inkrementell und mit Schema-Kontrolle in eine Delta-Tabelle wandern.

Beispiel: Bronze-Ingestion aus einem S3-Bucket

Ein typischer Einsatz ist die Bronze-Schicht einer Medaillon-Architektur. Ein Quellsystem legt JSON-Dateien mit Transaktions-Events in einem S3-Bucket ab. Ein Auto-Loader-Stream liest neue Dateien inkrementell und schreibt sie in eine Delta-Tabelle bronze.transactions.

python
(spark.readStream
    .format("cloudFiles")
    .option("cloudFiles.format", "json")
    .option("cloudFiles.schemaLocation", "/Volumes/main/bronze/_schemas/transactions")
    .option("cloudFiles.schemaEvolutionMode", "addNewColumns")
    .load("s3://acme-raw/transactions/")
  .writeStream
    .option("checkpointLocation", "/Volumes/main/bronze/_checkpoints/transactions")
    .trigger(availableNow=True)
    .toTable("main.bronze.transactions"))

Der Trigger availableNow verarbeitet alle seit dem letzten Lauf angesammelten Dateien in einem Rundlauf und beendet die Query danach. Diese Betriebsart eignet sich für stündliche oder tägliche Jobs. Für niedrigere Latenzen bleibt die Query dauerhaft aktiv und verarbeitet Dateien fortlaufend im Micro-Batch. Der Schema-Location-Pfad hält das inferierte Schema; die Checkpoint-Location verhindert doppelte Verarbeitung nach Neustarts.

Auto Loader im eigenen Unternehmen umsetzen?

Wir zeigen, wie sich das in deiner Systemlandschaft konkret abbilden lässt.

Gespräch vereinbaren