- Зачем:
- обучение студентов базовому обслуживанию Iceberg-таблиц (compaction, expire_snapshots) и закрепление навыков всего курса.
- Что:
- создан notebooks/08_maintenance_and_final_lab.ipynb с обзором проблемы мелких файлов и её решения.
- добавлена финальная сквозная практика (raw -> bronze -> silver -> Trino -> schema evolution -> обслуживание) в namespace lakehouse.final.
- в финальную практику включены педагогические подсказки и конкретные задания (trip_duration_minutes).
- статус модуля 8 в планах обновлен до Ready for validation.
- Проверка:
- ручная проверка выполнения ячеек в ноутбуке и синтаксиса stored procedures Iceberg.
- Зачем:
- обучение студентов безопасным изменениям таблиц и механизмам отката Iceberg.
- Что:
- создан notebooks/07_safe_table_changes.ipynb с демонстрацией ALTER TABLE, VERSION AS OF и rollback.
- в ноутбук добавлена самостоятельная работа на демо-таблице и чекпоинт для самопроверки.
- статус модуля 7 в планах обновлен до Ready for validation.
- Проверка:
- ручная верификация структуры ноутбука и синтаксиса Spark SQL/trino_query.
- Зачем:
- продемонстрировать возможность доступа нескольких движков к одной Iceberg-таблице через общий каталог.
- Что:
- создан notebooks/06_spark_and_trino_on_same_table.ipynb с примерами write (Spark) -> read (Trino).
- в jupyter/Dockerfile добавлен клиент trino.
- в START_HERE.md и docs/stack_reference.md добавлена инструкция по подключению DBeaver к Trino.
- статус модуля 6 в планах обновлен до Ready for validation.
- Проверка:
- ручная проверка выполнения ячеек в ноутбуке (Python trino client).
- проверка наличия всех инструкций в документации.
- Зачем:
- обучение переходу от bronze-таблицы к очищенному и обогащенному silver-слою.
- Что:
- создан notebooks/05_silver_layer.ipynb с пайплайном фильтрации, нормализации и JOIN.
- в ноутбук добавлены проверки качества на уровнях строк, схемы и агрегатов.
- статус модуля 5 в планах обновлен до Ready for validation.
- Проверка:
- ручная проверка структуры ноутбука и корректности Spark-трансформаций.
- Зачем:
- нужно показать базовые операции обслуживания Iceberg-таблиц и финальную практику.
- Что:
- создан файл plans/module-08-maintenance-and-final-lab.md с планом модуля.
- обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
- проверка согласованности ссылок и структуры документации.
- Зачем:
- нужно продемонстрировать возможности Iceberg по schema evolution и time travel.
- Что:
- создан файл plans/module-07-safe-table-changes.md с планом модуля.
- обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
- проверка согласованности ссылок и структуры документации.
- Зачем:
- нужно продемонстрировать возможность одновременной работы Spark и Trino с одной Iceberg-таблицей.
- Что:
- создан файл plans/module-06-spark-and-trino-on-same-table.md с планом модуля.
- обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
- проверка согласованности ссылок и структуры документации.
- Зачем:
- необходимо расширить курс до silver-слоя с воспроизводимыми трансформациями.
- Что:
- создан файл plans/module-05-silver-layer.md с планом модуля.
- обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
- проверка согласованности ссылок и структуры документации.
- Зачем:
- нужен практический модуль 4, который переводит студента от raw-файлов к первой управляемой Iceberg-таблице.
- Что:
- добавлен ноутбук notebooks/04_bronze_with_iceberg.ipynb с CTAS в bronze, разбором metadata tables и структурой хранения в MinIO.
- добавлены пояснения про namespace, сравнение raw vs Iceberg и разбор snapshot-полей по итогам ревью.
- обновлен plans/README.md строкой для модуля 4.
- Проверка:
- синтаксис всех code-ячеек ноутбука проверен локальной компиляцией.
- тесты пройдены пользователем.
- Зачем:
- нужен следующий практический шаг после модулей 1-2: доставить raw-данные в MinIO и впервые прочитать их через Spark.
- Что:
- добавлен ноутбук модуля 3 с raw ingest, first read, проверкой схемы, null-анализом и поиском аномалий.
- обновлены START_HERE, stack reference и docker-compose для data bundle в ./data и mount в /opt/data.
- добавлены правила игнорирования data bundle, .gitkeep для пустой директории и обновлён статус плана модуля.
- Проверка:
- docker compose config.
- выполнение notebooks/03_raw_ingest_and_first_read.ipynb на локальном data bundle.
- Зачем:
- необходимо дать студенту практический инструмент для понимания разделения storage, catalog и compute.
- Что:
- создан notebooks/02_lakehouse_mental_model.ipynb с демонстрацией записи в Spark и инспекцией в PostgreSQL и MinIO.
- в ноутбук добавлена таблица сравнения Lakehouse vs классические СУБД.
- реализованы механизмы идемпотентности (CREATE OR REPLACE TABLE) и автоматической очистки ресурсов.
- обновлен статус Модуля 2 в планах на "Ready for validation".
- Проверка:
- проверена структура JSON ноутбука, наличие всех демонстрационных и самостоятельных ячеек, а также корректность путей к MinIO (prefix warehouse/).
- Зачем:
- необходимо зафиксировать структуру второго модуля «Ментальная модель Lakehouse» и подготовить инфраструктуру для инспекции компонентов.
- Что:
- создан файл plans/module-02-lakehouse-mental-model.md с детальным планом работ, целями и чекпоинтом.
- в jupyter/Dockerfile добавлены библиотеки boto3 и psycopg2-binary для программного доступа к MinIO и PostgreSQL из ноутбуков.
- модуль 2 добавлен в общий индекс планов в plans/README.md.
- Проверка:
- файл плана соответствует методике курса, в Dockerfile запинены версии библиотек.
- Зачем:
- нужен воспроизводимый вход в курс и единое место хранения планов по модулям.
- Что:
- добавлены `plans/README.md`, living plan Модуля 1, `START_HERE.md` и канонический ноутбук `01_environment_and_smoke_test.ipynb`, а `cluster_smoke.py` расширен до reusable helper и CLI smoke test.
- уточнены onboarding-материалы и окружение: добавлены Spark UI в `README.md`, ресурсы хоста и креды MinIO в `START_HERE.md`, использован `NB_GID` в `jupyter/Dockerfile`, в ноутбуке усилены самостоятельные задания и добавлены `cell id`, а пояснения в `cluster_smoke.py` переведены на русский для студентов.
- обновлены `README.md`, `AGENTS.md` и archive howto, удалены устаревшие `spark-basic-test.ipynb` и `03_partitioning_and_schema_evolution.ipynb`.
- Проверка:
- `python3 -m py_compile src/spark/cluster_smoke.py src/spark/__init__.py`.
- `docker compose build spark-master` и `docker compose build jupyter`.
- `docker compose up -d`, `docker compose exec jupyter python3 -c "from spark.cluster_smoke import create_spark_session, run_cluster_smoke; spark=create_spark_session(app_name='module-01-validation'); print(run_cluster_smoke(spark)); spark.stop()"` и `docker compose exec jupyter jupyter nbconvert --to notebook --execute /opt/work/01_environment_and_smoke_test.ipynb --output-dir /tmp --output module1-validation-2.ipynb`.