A Structured Streaming source that ingests new files from cloud storage as they land — no manual bookkeeping of what's already been processed.
Auto Loader is the cloudFiles Structured Streaming source that incrementally and efficiently processes new data files as they arrive in cloud object storage, with no additional setup.
It's the default way to do file-based ingestion on Databricks. Auto Loader tracks which files it has already seen in a checkpoint, so you never re-scan or re-process a billion-file landing zone by hand — you just point a stream at a path and it picks up only the new files, exactly once.
A streaming reader over a cloud path; supports JSON, CSV, XML, Parquet, Avro, ORC, text, and binaryFile.
Listing scans the path (default, zero setup); notification (useNotifications=true) uses a cloud queue — fewer API calls, scales to high file counts.
Infers from the first 50 GB or 1000 files; schemaLocation persists it. Evolution defaults to addNewColumns (no schema) or none (explicit schema).
Processed-file metadata is persisted in the checkpoint (RocksDB), guaranteeing each file is processed exactly once across restarts.
_rescued_data captures fields that don't match the schema — extra columns, type and case mismatches — as JSON, so nothing is silently dropped.
PySpark(spark.readStream
.format("cloudFiles")
.option("cloudFiles.format", "json") # source file format
.option("cloudFiles.schemaLocation", "/Volumes/main/raw/_schema")
.load("/Volumes/main/raw/landing/")
.writeStream
.option("checkpointLocation", "/Volumes/main/raw/_ckpt") # tracks processed files → exactly-once
.trigger(availableNow=True)
.toTable("main.bronze.events"))
cloudFiles.schemaLocation is required for schema inference, and each stream needs its own dedicated checkpoint — sharing one corrupts file tracking.cloudFiles.useNotifications=true), or file events on DBR 14.3 LTS+, for scale.none — new columns are dropped unless you set rescuedDataColumn or change the mode.addNewColumns mode the stream fails with UnknownFieldException on a new column by design; it adds the column and you simply restart.cloudFiles streaming source — it tracks processed files in the checkpoint, so it ingests only new files, exactly once, with no manual state."addNewColumns) and routes anything that doesn't fit into the _rescued_data column instead of failing the load."Verified against docs.databricks.com · June 2026