🧱 Delta Lake
ACID transactions, Time Travel, Schema Evolution, Optimization
🏔️ Что такое Delta Lake?
Open-source storage layer, записывает в формате Parquet + _delta_log transaction log. ACID transactions — Atomicity, Consistency, Isolation, Durability. Scalable metadata — миллиарды файлов. Интеграция с Databricks, Apache Spark, Flink.
⏰ Time Travel
Каждая операция записи создаёт версию. Возврат к старой версии: `VERSION AS OF 5` или `TIMESTAMP AS OF '2024-01-01'`. RESTORE TABLE — восстановление старой версии таблицы. VACUUM — очистка старых файлов (по умолчанию 7 дней).
📐 Schema Enforcement & Evolution
Schema Enforcement — отклоняет записи, не соответствующие схеме. Schema Evolution: добавление нового столбца с опцией `mergeSchema`. Delta constraints: NOT NULL, CHECK.
⚡ Оптимизация
OPTIMIZE — объединение мелких файлов (small file problem). Z-ORDER — совместное размещение связанных данных (data skipping при фильтрации). Auto Optimize: Auto Compaction + Optimized Writes. Data Skipping — пропуск файлов на основе статистики min/max.
💡 Ключевые моменты
- Delta = Parquet + _delta_log (transaction log)
- ACID: безопасная параллельная запись
- Time Travel: получение старого состояния по версии/временной метке
- VACUUM: удаление старых файлов (хранить минимум 7 дней)
- OPTIMIZE + ZORDER: повышение производительности чтения
- Schema enforcement: блокирует попадание некорректных данных
📋 Пример кода
-- Delta table yaratish
CREATE TABLE sales (
id BIGINT,
amount DOUBLE,
date DATE
) USING DELTA
LOCATION '/mnt/data/sales';
-- Time Travel
SELECT * FROM sales VERSION AS OF 10;
SELECT * FROM sales TIMESTAMP AS OF '2024-01-15';
-- Eski versiyani tiklash
RESTORE TABLE sales TO VERSION AS OF 5;
-- Optimizatsiya
OPTIMIZE sales ZORDER BY (date, category);
-- Eski fayllarni tozalash (7 kundan eski)
VACUUM sales RETAIN 168 HOURS;
-- Table history
DESCRIBE HISTORY sales LIMIT 10;
🎯 Советы для экзамена
- VACUUM RETAIN 0 HOURS — уничтожает возможность time travel! Храните по умолчанию 7 дней (168 часов)
- Schema Evolution: `.option("mergeSchema", "true")` — добавление нового столбца. Изменение типа существующего столбца — ошибка schema enforcement
- Delta table может быть managed или external: managed — `DROP TABLE` удаляет данные, external — только метаданные
- DESCRIBE HISTORY — кто, когда и как вносил изменения (audit trail)
- Delta Sharing — предоставление Delta table другим организациям (функция, специфичная для Databricks)
⚠️ Частые ошибки
- Думать, что time travel работает после VACUUM — VACUUM удаляет старые файлы, делая time travel невозможным
- Путать назначение OPTIMIZE и VACUUM: OPTIMIZE=объединение файлов, VACUUM=удаление старых файлов
- Не знать разницы между Schema Enforcement и Schema Evolution: Enforcement=блокирует, Evolution=принимает
🧠 Для запоминания: "Delta = Parquet + Log": P (файлы Parquet) + L (_delta_log) = Delta Lake. "TOVA" = Time travel, Optimize, Vacuum, Acid — 4 ключевые возможности Delta Lake
Проверьте себя по теме «Delta Lake»
Бесплатные интерактивные тесты, пробный экзамен и полные уроки — на платформе CertMaster.
Начать бесплатно →