← Blog

28 October 2024 · 7 min · Delta Lake · Databricks · Lakehouse

Delta Lake best practices for lakehouses

Patterns for building reliable, fast lakehouses with Delta Lake on Databricks, from partitioning to maintenance.

Delta Lake brings ACID transactions, schema enforcement and time travel to a data lake. These are the practices I keep coming back to in production.

Partitioning

CREATE TABLE events
USING DELTA
PARTITIONED BY (date, region)
AS SELECT * FROM raw_events
  • ✦Partition on columns people filter on often
  • ✦Aim for files of 1 GB or more per partition
  • ✦Avoid columns with lots of unique values

Z-ordering

Lay out the data to match the queries you run most:

OPTIMIZE events
ZORDER BY (customer_id, event_type)

Data quality

Let the schema grow safely when new columns appear:

df.write.format("delta")
  .option("mergeSchema", "true")
  .mode("append")
  .save("/data/events")

And stop bad rows at the door:

ALTER TABLE events
ADD CONSTRAINT valid_amount CHECK (amount > 0)

Maintenance

-- Compact small files
OPTIMIZE events

-- Clean up old versions
VACUUM events RETAIN 168 HOURS

Delta Lake gives you the reliability of a warehouse with the flexibility of a lake. These habits keep it fast and easy to maintain.

Working on something like this?

Get in touch →

Next post

Predictive maintenance with machine learning

→