Delta Lake je open-source storage layer pro spolehlivý data lake. ACID transakce, schema enforcement a time travel nad Parquet.
Proč Delta Lake¶
Řeší nekonzistentní čtení a chybějící schema enforcement transakčním logem.
Klíčové funkce¶
- ACID transakce
- Schema enforcement/evolution
- Time travel
- MERGE (upsert)
from delta import DeltaTable
df.write.format("delta").save("/data/orders")
# Time travel
spark.read.format("delta").option("versionAsOf", 5).load("/data/orders")
# MERGE
dt = DeltaTable.forPath(spark, "/data/orders")
dt.alias("t").merge(new.alias("s"), "t.order_id = s.order_id")\
.whenMatchedUpdateAll().whenNotMatchedInsertAll().execute()
OPTIMIZE delta.`/data/orders` ZORDER BY (customer_id)
VACUUM delta.`/data/orders` RETAIN 168 HOURS
Optimalizace a údržba¶
OPTIMIZE příkaz kompaktuje malé soubory do větších, což zrychluje čtení. ZORDER přeuspořádá data podle zadaných sloupců pro efektivnější data skipping — pokud často filtrujete podle customer_id, ZORDER podle tohoto sloupce výrazně sníží množství čtených dat. VACUUM maže staré verze souborů, které již nejsou potřeba pro time travel.
V praxi se Delta Lake často kombinuje s Apache Spark pro batch i streaming zpracování. Unity Catalog (Databricks) nebo HMS (Hive Metastore) slouží jako metadata katalog. Delta Lake podporuje schema evolution — přidání sloupce bez přepisování existujících dat. Pro migraci z raw Parquet stačí konvertovat existující soubory příkazem CONVERT TO DELTA.
Shrnutí¶
Delta Lake přidává spolehlivost warehouse do data lake. Základ lakehouse architektury.