ddadmin a085b2fc55 fix(course): исправлена семантика Iceberg snapshots
- Зачем: объяснения CREATE OR REPLACE и rollback расходились с поведением Iceberg 1.10.0 и ломали повторный запуск упражнений.
- Что: исправлены материалы и планы модулей 2, 4, 5, 7 и 8; одноразовые таблицы сбрасываются через DROP TABLE PURGE.
- Проверка: JSON и Python AST валидны; на Spark 3.5.1, Iceberg 1.10.0, JDBC/MinIO и Trino 478 подтверждены rollback, replace, time travel и повторный сброс до одного snapshot-а.
2026-09-15 07:35:39 -04:00
2025-12-03 16:35:50 +03:00
2025-12-03 16:35:50 +03:00
2025-12-03 16:35:50 +03:00

Lakehouse без магии

Практический курс, после которого ты будешь уверенно работать с Lakehouse-стеком: поднимать стенд, строить пайплайн raw -> bronze -> silver, читать одну таблицу из двух движков и не бояться изменений в данных.

Что ты получишь

После прохождения 8 модулей ты умеешь:

  1. Поднимать и диагностировать локальный Lakehouse-стенд — не по инструкции, а с пониманием, что и зачем работает.
  2. Объяснять архитектуру storage + catalog + compute — и видеть, как знакомые концепции из PostgreSQL/Greenplum ложатся на новый стек.
  3. Строить пайплайн raw -> bronze -> silver на реальном датасете NYC Taxi — с проверками качества и воспроизводимостью.
  4. Работать с двумя движками — записывать данные через Spark, читать через Trino, и понимать, почему это работает без копирования.
  5. Безопасно менять таблицы — schema evolution, time travel, rollback к предыдущему состоянию вместо паники.
  6. Обслуживать таблицы — compaction и expire_snapshots, с пониманием параллелей к VACUUM/REORGANIZE.

Курс рассчитан на ~12-15 часов самостоятельной работы. Каждый модуль: объяснение, демонстрация, самостоятельное задание, checkpoint.

Стек

Всё работает локально в Docker. Никаких облаков, внешних зависимостей и регистраций.

graph TB
    U[Student / engineer]

    subgraph Access
        J[JupyterLab<br/>notebooks / PySpark]
        Q[Trino UI / CLI<br/>ad hoc SQL]
    end

    subgraph Compute
        S[Spark cluster<br/>master + workers]
        T[Trino 478<br/>Iceberg connector]
    end

    subgraph Shared Services
        P[(PostgreSQL<br/>Iceberg JDBC catalog)]
        M[(MinIO<br/>S3-compatible)]
    end

    U --> J
    U --> Q
    J --> S
    Q --> T
    S --> P
    S --> M
    T --> P
    T --> M
Компонент Роль в стенде
MinIO Storage — хранит данные и служебные файлы Iceberg
PostgreSQL Catalog — метаданные JDBC-каталога lakehouse
Spark Compute — ETL, запись и чтение Iceberg-таблиц
Trino Compute — ad hoc SQL, чтение тех же таблиц
JupyterLab Точка входа — практические ноутбуки курса

С чего начать

  1. Открой START_HERE.md — запуск стенда, диагностика, первый ноутбук.
  2. Пройди notebooks/01_environment_and_smoke_test.ipynb.
  3. Дальше по порядку: docs/course_program.md.

Краткий запуск из корня репозитория:

docker compose build
docker compose up -d
docker compose ps

Зафиксированные исторические образы MinIO загружаются из официального Quay registry; подробности — в техническом reference.

После старта:

UI Адрес
JupyterLab http://localhost:8888
Spark Master http://localhost:8080
Trino http://localhost:8090
MinIO Console http://localhost:9001

JupyterLab опубликован только на loopback-интерфейсе хоста и рассчитан на локальный одно-пользовательский стенд. Подключение через VS Code Remote-SSH описано в START_HERE.md.

Документы для прохождения

  • START_HERE.md — первый маршрут: prerequisites, запуск, диагностика.
  • docs/course_program.md — модульная структура и состав учебных материалов.
  • docs/stack_reference.md — порты, команды, конфиги, шпаргалка.
  • docs/glossary.md — справочник терминов (storage, catalog, compute, snapshot и др.).

Менторство

Курс рассчитан на самостоятельное прохождение, но если хочешь разобрать темы глубже с ментором по Data Engineering — напиши: @dementev_dev.

Лицензия

Материалы этого репозитория лицензированы на условиях Creative Commons Attribution 4.0 International (CC BY 4.0). См. LICENSE.

S
Description
No description provided
Readme
836 KiB
0 Stars 1 Watchers 0 Forks
Languages
Jupyter Notebook 97.2%
Python 1.5%
Dockerfile 1.3%