27 Commits
Author SHA1 Message Date
ddadmin df39ff9e64 merge: курс «Lakehouse без магии» v1
Вливает ветку docs/lab-materials: 8 модулей, стартовая документация,
вспомогательные материалы (glossary, mentor notes, шпаргалка).
2026-03-08 01:07:02 +03:00
ddadminandClaude Opus 4.6 0ae83cecdb docs(course): добавлены glossary, mentor notes, шпаргалка и переписан README
- Зачем:
  - закрыты 3 вспомогательных артефакта из course_program.md §3.3: glossary, cheat sheet, mentor notes.
  - README переписан с фокусом на ценность для студента.
- Что:
  - создан docs/glossary.md (16 терминов, сгруппированных по темам с параллелями к DWH).
  - создан docs/mentor_notes.md (тайминг, типичные вопросы, checkpoint-ы, формат «менти работает сам»).
  - добавлена секция «Краткая шпаргалка» в docs/stack_reference.md (S3-пути, таблицы, SQL-команды, маунты).
  - README.md переписан: лид с навыками, убрано дублирование со stack_reference.
  - обновлены перекрёстные ссылки в AGENTS.md, course_program.md, maintainer_guide.md.
- Проверка:
  - все ссылки между документами валидны (glossary.md, mentor_notes.md существуют).
  - термины glossary и команды шпаргалки верифицированы по содержимому ноутбуков.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 01:04:26 +03:00
ddadmin 4bea2af9d2 feat(module-08): реализован модуль по обслуживанию таблиц и финальная практика
- Зачем:
  - обучение студентов базовому обслуживанию 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.
2026-03-08 00:33:40 +03:00
ddadmin 9ffb9b80e0 feat(module-07): реализован модуль по schema evolution и time travel
- Зачем:
  - обучение студентов безопасным изменениям таблиц и механизмам отката Iceberg.
- Что:
  - создан notebooks/07_safe_table_changes.ipynb с демонстрацией ALTER TABLE, VERSION AS OF и rollback.
  - в ноутбук добавлена самостоятельная работа на демо-таблице и чекпоинт для самопроверки.
  - статус модуля 7 в планах обновлен до Ready for validation.
- Проверка:
  - ручная верификация структуры ноутбука и синтаксиса Spark SQL/trino_query.
2026-03-08 00:19:06 +03:00
ddadmin 65d57ec6d6 feat(module-06): реализован модуль по совместной работе Spark и Trino
- Зачем:
  - продемонстрировать возможность доступа нескольких движков к одной 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).
  - проверка наличия всех инструкций в документации.
2026-03-07 23:58:36 +03:00
ddadminandClaude Opus 4.6 68c530c855 refactor(course): перенесена загрузка taxi_zone_lookup из домашки в демо-секцию
- Зачем:
  - демо-ячейки последующих модулей не должны зависеть от домашних заданий предыдущих — модуль 5 использует lookup в демо-коде для JOIN.
- Что:
  - модуль 4: секция 8 из домашки (5 пустых ячеек) превращена в демо с заполненным кодом (чтение CSV, CTAS).
  - модуль 4: новая домашка (секция 9) — осмотр metadata lookup-таблицы, сравнение с основной.
  - модуль 4: секции перенумерованы (9→10, 10→11), завершение упоминает обе bronze-таблицы.
  - модуль 5: assert-сообщение для lookup обновлено (убрана ссылка на «самостоятельное задание»).
  - планы модулей 4 и 5: обновлены дизайн-решения, структура секций и раздел рисков.
- Проверка:
  - прогнать готовые ячейки модуля 4 → lookup-таблица создаётся автоматически → модуль 5 проходит без ошибок.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 23:47:05 +03:00
ddadmin bcf7975227 feat(notebooks): реализован модуль 5 по слою silver и трансформациям
- Зачем:
  - обучение переходу от bronze-таблицы к очищенному и обогащенному silver-слою.
- Что:
  - создан notebooks/05_silver_layer.ipynb с пайплайном фильтрации, нормализации и JOIN.
  - в ноутбук добавлены проверки качества на уровнях строк, схемы и агрегатов.
  - статус модуля 5 в планах обновлен до Ready for validation.
- Проверка:
  - ручная проверка структуры ноутбука и корректности Spark-трансформаций.
2026-03-07 23:32:43 +03:00
ddadmin 4a736f6c4e docs(plan): добавлен план модуля 8 по обслуживанию таблиц
- Зачем:
  - нужно показать базовые операции обслуживания Iceberg-таблиц и финальную практику.
- Что:
  - создан файл plans/module-08-maintenance-and-final-lab.md с планом модуля.
  - обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
  - проверка согласованности ссылок и структуры документации.
2026-03-07 23:13:37 +03:00
ddadmin a31a020a76 docs(plan): добавлен план модуля 7 по безопасным изменениям таблиц
- Зачем:
  - нужно продемонстрировать возможности Iceberg по schema evolution и time travel.
- Что:
  - создан файл plans/module-07-safe-table-changes.md с планом модуля.
  - обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
  - проверка согласованности ссылок и структуры документации.
2026-03-07 22:27:54 +03:00
ddadmin 39b1a5618c docs(plan): добавлен план модуля 6 по Spark и Trino на одной таблице
- Зачем:
  - нужно продемонстрировать возможность одновременной работы Spark и Trino с одной Iceberg-таблицей.
- Что:
  - создан файл plans/module-06-spark-and-trino-on-same-table.md с планом модуля.
  - обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
  - проверка согласованности ссылок и структуры документации.
2026-03-07 21:30:26 +03:00
ddadmin 82d067d6c6 docs(plan): добавлен план модуля 5 по silver-слою
- Зачем:
  - необходимо расширить курс до silver-слоя с воспроизводимыми трансформациями.
- Что:
  - создан файл plans/module-05-silver-layer.md с планом модуля.
  - обновлен plans/README.md с записью о новом модуле в таблицу содержания.
- Проверка:
  - проверка согласованности ссылок и структуры документации.
2026-03-07 20:03:18 +03:00
ddadmin 6567a44b74 feat(course): добавлен ноутбук модуля bronze с Iceberg
- Зачем:
  - нужен практический модуль 4, который переводит студента от raw-файлов к первой управляемой Iceberg-таблице.
- Что:
  - добавлен ноутбук notebooks/04_bronze_with_iceberg.ipynb с CTAS в bronze, разбором metadata tables и структурой хранения в MinIO.
  - добавлены пояснения про namespace, сравнение raw vs Iceberg и разбор snapshot-полей по итогам ревью.
  - обновлен plans/README.md строкой для модуля 4.
- Проверка:
  - синтаксис всех code-ячеек ноутбука проверен локальной компиляцией.
  - тесты пройдены пользователем.
2026-03-07 19:22:04 +03:00
ddadmin 6d1b6e9f61 feat(course): добавлен модуль 3 про raw ingest и чтение в Spark
- Зачем:
  - нужен следующий практический шаг после модулей 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.
2026-03-07 18:51:45 +03:00
ddadmin 7ae771df68 docs(plan): добавлен план модуля 4 по bronze-слою
- Зачем:
  - нужен согласованный draft модуля про первую Iceberg-таблицу и переход от raw к bronze.
- Что:
  - добавлен план `module-04-bronze-with-iceberg.md` с deliverables, структурой ноутбука и checkpoints.
  - зафиксированы решения по CTAS, инспекции metadata Iceberg и зависимости модуля 5 от bronze-таблицы.
- Проверка:
  - план вручную сверен с `docs/course_program.md` и `docs/course_prd.md`.
  - runtime-проверка ноутбука и SQL-операций на стенде не выполнялась.
2026-03-07 12:02:02 +03:00
ddadmin 60079dd1c8 docs(plan): добавлен план модуля 3 по raw-ingest
- Зачем:
  - нужен согласованный draft модуля про raw-данные, первое чтение в Spark и подготовку data bundle.
- Что:
  - добавлен план `module-03-raw-ingest-and-first-read.md` с deliverables, структурой ноутбука и acceptance criteria.
  - зафиксированы требования к onboarding-документации, raw-ingest в MinIO и валидации data bundle.
- Проверка:
  - план вручную сверен с `docs/course_program.md`, `docs/course_prd.md` и `docs/stack_reference.md`.
  - runtime-проверка стенда и ноутбука не выполнялась.
2026-03-07 11:43:38 +03:00
ddadmin 3763538aca feat(notebooks): реализован ноутбук Модуля 2 «Ментальная модель Lakehouse»
- Зачем:
  - необходимо дать студенту практический инструмент для понимания разделения 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/).
2026-03-07 01:26:19 +03:00
ddadmin d69fec2bf5 docs(plans): добавлен план Модуля 2 и обновлены зависимости стенда
- Зачем:
  - необходимо зафиксировать структуру второго модуля «Ментальная модель Lakehouse» и подготовить инфраструктуру для инспекции компонентов.
- Что:
  - создан файл plans/module-02-lakehouse-mental-model.md с детальным планом работ, целями и чекпоинтом.
  - в jupyter/Dockerfile добавлены библиотеки boto3 и psycopg2-binary для программного доступа к MinIO и PostgreSQL из ноутбуков.
  - модуль 2 добавлен в общий индекс планов в plans/README.md.
- Проверка:
  - файл плана соответствует методике курса, в Dockerfile запинены версии библиотек.
2026-03-07 01:18:29 +03:00
ddadmin b9916ab2f5 docs(readme): уточнены схема стенда и блок менторства
- Зачем:
  - нужно точнее показать пользовательский путь по стенду и добавить понятную точку контакта с автором курса.
- Что:
  - обновлена архитектурная диаграмма в README.md: добавлены пользователь, точки входа и явное разделение access, compute и shared services.
  - уточнены подписи к ролям компонентов стенда.
  - добавлен блок с контактами автора и предложением менторского разбора тем по Data Engineering.
- Проверка:
  - сверены диаграмма и описания в README.md с фактической топологией docker-compose и сценарием использования через JupyterLab и Trino.
2026-03-07 00:46:38 +03:00
ddadmin 3f76d66ed1 docs(readme): разделены student-facing и внутренние документы
- Зачем:
  - нужно убрать смешение маршрута студента с внутренними документами сопровождения репозитория.
- Что:
  - переработан README.md как верхнеуровневый вход в репозиторий без ссылок на внутренние maintainer-документы.
  - добавлен docs/stack_reference.md для технического reference стенда и уточнены его роли относительно START_HERE.md.
  - синхронизированы AGENTS.md и docs/maintainer_guide.md под новую границу между onboarding и внутренней документацией.
- Проверка:
  - сверены README.md, START_HERE.md, docs/stack_reference.md, AGENTS.md и docs/maintainer_guide.md на согласованность маршрута и аудиторий.
2026-03-07 00:38:26 +03:00
ddadmin d1bcd63bf1 docs(repo): переработаны агентские инструкции и карта репозитория
- Зачем:
  - нужно отделить стабильные правила для агента от изменчивой структуры курса и стенда.
- Что:
  - сокращен и переписан AGENTS.md под текущую модель репозитория как курса вокруг Lakehouse-стенда.
  - добавлен docs/maintainer_guide.md с картой репозитория, источниками истины и правилами синхронизации документации.
- Проверка:
  - сверены AGENTS.md и docs/maintainer_guide.md с README.md, START_HERE.md, docs/course_prd.md и docs/course_program.md.
2026-03-07 00:31:09 +03:00
ddadmin 688c46c68b feat(module-1): доработаны материалы модуля 1 и удалён legacy-ноутбук
- Зачем:
  - нужен воспроизводимый вход в курс и единое место хранения планов по модулям.
- Что:
  - добавлены `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`.
2026-03-07 00:24:40 +03:00
ddadmin 9d84e15e01 docs(course): архивирован legacy HOWTO и обновлен README
- Зачем:
  - нужно убрать устаревший учебный маршрут из student-facing документов, но сохранить старые лабораторные как reference-материал.
- Что:
  - HOWTO.md перенесен в docs/archive/legacy_howto.md и помечен как архивный legacy-документ.
  - README.md больше не отправляет студента в устаревший HOWTO и ссылается на актуальную программу курса.
- Проверка:
  - просмотрен git diff -- README.md HOWTO.md docs/archive/legacy_howto.md.
  - проверен git diff --cached --stat перед коммитом.
2026-03-06 23:45:37 +03:00
ddadmin 7514e5a625 docs(course): обновлены PRD и программа курса
- Зачем:
  - нужно выровнять учебную программу с PRD и явно отделить стартовый onboarding от практики в ноутбуках.
- Что:
  - обновлены название курса и файл программы, а структура материалов пересобрана вокруг стартовой документации, 8 практических модулей и вспомогательных артефактов.
  - добавлены трассировка Learning Outcomes, hands-on упражнение для модуля 2 и уточнения по доставке учебного data bundle.
  - зафиксированы acceptance criteria, минимальный scope glossary и статус partitioning как legacy-темы вне обязательного трека v1.
- Проверка:
  - просмотрен git diff HEAD~1 -- docs/course_prd.md docs/course_program.md.
  - проверен git diff --cached --stat перед amend.
2026-03-06 23:19:20 +03:00
ddadmin f4a5bf0e2a docs(course): обновлён PRD и переименован файл
- Зачем:
  - зафиксировать согласованную рамку курса по Lakehouse и сделать имя документа проще и единообразнее.
- Что:
  - переработан PRD курса: уточнены ЦА, learning outcomes, scope, dataset strategy и out of scope.
  - добавлены checkpoints, acceptance criteria и методические принципы курса.
  - файл docs/PRD_Course.md переименован в docs/course_prd.md.
- Проверка:
  - проверен итоговый diff и содержимое Markdown-документа; код и тесты не затрагивались.
2026-03-06 22:39:33 +03:00
ddadmin 9d855c9b58 feat(docs): добавлены PRD и программа обучения для курса по Lakehouse
- Зачем:
  - Формализовать цели, аудиторию и структуру учебного курса для плавного погружения джунов в Lakehouse-архитектуру.
- Что:
  - Создан docs/PRD_Course.md с описанием JTBD, "Aha-moments" и метрик успеха.
  - Создан docs/COURSE_PLAN.md с детальной программой из 10 интерактивных уроков.
- Проверка:
  - Файлы присутствуют в директории docs и корректно ссылаются друг на друга.
2026-03-06 21:06:46 +03:00
ddadmin 085fd25875 Фикс диаграммы 2025-12-03 16:39:11 +03:00
ddadmin 41bbdecba5 первый commit 2025-12-03 16:35:50 +03:00