- Зачем: - закрыты 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>
20 KiB
Программа учебного курса: Lakehouse без магии
Этот документ заменяет предыдущий черновой план и выравнивает программу с PRD из course_prd.md.
1. Рамка курса
Формат: стартовая документация + 8 практических уроков в Jupyter Notebooks + вспомогательные справочные материалы.
Оценка длительности: ~12-15 часов вдумчивой работы.
Ориентир на модуль: в среднем ~1.5 часа, но финальная практика может занять дольше.
Сквозной учебный кейс: NYC TLC Yellow Taxi Trip Records + Taxi Zone Lookup.
Методика каждого урока: объяснение -> демонстрация -> самостоятельное повторение -> checkpoint.
Главная цель курса: дать студенту безопасную рабочую модель Lakehouse на локальном стенде Spark + Trino + Iceberg + MinIO + PostgreSQL, а не обзор всех возможных фич.
2. Принципы декомпозиции программы
- Сначала студент должен научиться поднимать и диагностировать стенд, и только потом строить пайплайн.
- Архитектурная модель
storage + catalog + computeпроходит через весь курс, а не выносится в одну "теоретическую" лекцию. - Весь курс строится вокруг одного датасета и одного потока
raw -> bronze -> silver. - В первой версии курса основной табличный формат только один:
Iceberg. - Практики про безопасность важнее "вау-фич": аккуратный
overwrite, понимание снапшотов, воспроизводимость шагов, базовое обслуживание таблиц. - Темы вне PRD v1 не включаются в основной трек и остаются в backlog.
3. Состав учебных материалов
Курс не должен состоять только из ноутбуков. Ноутбуки являются ядром практики, но вход в курс, запуск стенда и правила работы должны быть вынесены в обычную документацию, доступную до старта Jupyter.
3.1. Стартовая документация до первого ноутбука
Этот слой нужен, потому что студент ещё не имеет доступа к ноутбукам, пока не поднят стенд.
Минимальный обязательный набор:
START_HERE.mdили аналогичный стартовый документ с маршрутом прохождения курса;- инструкция по prerequisites:
Docker,Docker Compose, свободные порты, базовые команды; - пошаговый гайд по запуску стенда:
build,up, проверка сервисов, открытие UI; - краткое объяснение, как пользоваться
Jupyter, где лежат ноутбуки и как читать структуру урока; - troubleshooting по типовым проблемам старта;
- инструкция по reset/restart стенда для повторного прохождения практик.
Что должен закрывать этот слой:
- студент понимает, что нужно установить и проверить до начала курса;
- студент может поднять стенд без ментора;
- студент знает, как попасть в
Jupyter,MinIO,Trino UI; - студент понимает, как устроен формат уроков и что от него ожидается.
3.2. Практическое ядро курса
Это 8 ноутбуков, в которых живут демонстрации, самостоятельные задания и checkpoints.
3.3. Вспомогательные материалы
Кроме ноутбуков и стартового onboarding-слоя, курсу потребуются:
- вспомогательные скрипты в
src/sparkиsrc/trino; - инструкции по загрузке или подготовке учебных датасетов;
- краткий glossary по терминам
storage,catalog,compute,table format,namespace,metadata,manifest,snapshot,time travel,schema evolution,compaction,vacuum; - шпаргалка по типовым командам, адресам сервисов, ключевым путям и точкам входа (секция в
stack_reference.md); - опционально, заметки для ментора для ведения курса с ментором.
4. Трассировка Learning Outcomes на модули
| Learning Outcome | Основные модули | Где проверяется |
|---|---|---|
LO1. Понимание различий между storage, catalog, compute |
1, 2, 6 | checkpoints модулей 2 и 6 |
LO2. Умение поднять и диагностировать стенд |
1 | checkpoint модуля 1 |
LO3. Умение загрузить raw-данные и проверить схему |
3 | checkpoint модуля 3 |
LO4. Умение создать и заполнить Iceberg-таблицу |
4 | checkpoint модуля 4 |
LO5. Умение собрать поток raw -> bronze -> silver |
4, 5, 8 | checkpoints модулей 5 и 8 |
LO6. Умение читать одну таблицу из Spark и Trino |
6, 8 | checkpoint модуля 6 и финальная практика |
LO7. Умение выполнять безопасные операции с таблицей |
7, 8 | checkpoints модулей 7 и 8 |
5. Верхнеуровневая структура практической части
Модуль 1. Вход в стенд и базовая диагностика
Рабочее название ноутбука: 01_environment_and_smoke_test.ipynb
Зачем нужен: студент должен уметь самостоятельно поднять локальный стенд и понять, куда смотреть, если что-то не работает.
Содержание:
- запуск
docker compose buildиdocker compose up -d; - проверка сервисов и веб-интерфейсов;
- базовый smoke test для Spark;
- первый обзор того, где в стенде
MinIO,PostgreSQL,Spark,Trino,Jupyter.
Практика студента:
- запустить стенд;
- проверить статусы контейнеров и основные UI;
- выполнить простой smoke test и прочитать его результат.
Checkpoint: студент подтверждает, что стенд поднят, понимает назначение сервисов и умеет сделать первичную диагностику через docker compose ps, логи и UI.
Модуль 2. Ментальная модель Lakehouse: storage, catalog, compute
Рабочее название ноутбука: 02_lakehouse_mental_model.ipynb
Зачем нужен: убрать магическое восприятие Lakehouse и связать новую модель с привычным миром PostgreSQL/Greenplum.
Содержание:
- демонстрационный проход по цепочке
Spark -> catalog -> MinIOна маленькой demo-таблице; - что такое таблица в Lakehouse в практическом смысле;
- где лежат данные, где лежат метаданные, кто выполняет вычисления;
- разница между "одной базой данных" и набором согласованных компонентов;
- короткие параллели с классическим DWH.
Практика студента:
- выполнить готовую демонстрационную запись через
Sparkв небольшую demo-таблицу; - найти соответствующие артефакты в
MinIOи запись о таблице в каталоге через подготовленные диагностические шаги; - сопоставить наблюдения с ролями
storage / catalog / compute.
Checkpoint: студент своими словами объясняет роли MinIO, PostgreSQL, Spark и Trino, не путает физическое хранение с логической таблицей и может показать, где в стенде видны данные, метаданные и вычислитель.
Модуль 3. Raw-данные и первое чтение в Spark
Рабочее название ноутбука: 03_raw_ingest_and_first_read.ipynb
Зачем нужен: показать, как raw-данные попадают в стенд и как с ними безопасно начать работать.
Содержание:
- работа с заранее подготовленным локальным data bundle из onboarding-документации;
- явная загрузка исходных
PARQUET-файлов в raw-зону; - чтение raw-данных через Spark;
- проверка схемы, типов и базового качества данных;
- обсуждение того, почему raw лучше не "чинить на месте" и почему датасет не должен скачиваться "из интернета из ноутбука".
Практика студента:
- проверить состав локально полученного набора
NYC Taxi; - загрузить его в raw-зону
MinIO; - прочитать несколько месяцев
NYC Taxi; - проверить схему и посчитать базовые метрики;
- найти простые аномалии или проблемные значения.
Checkpoint: студент умеет загрузить учебный набор в raw-зону, прочитать raw-данные, проверить схему и объяснить, почему raw-слой нужен как воспроизводимая точка входа.
Модуль 4. Первая рабочая Iceberg-таблица и слой bronze
Рабочее название ноутбука: 04_bronze_with_iceberg.ipynb
Зачем нужен: перейти от набора файлов к управляемой таблице и построить первый слой обработки.
Содержание:
- создание namespace и Iceberg-таблицы через Spark;
- запись raw-данных в
bronze; - осмотр структуры Iceberg на прикладном уровне: data files, metadata, snapshots;
- связь
raw -> bronzeс привычнымstg/ods-мышлением.
Практика студента:
- создать первую Iceberg-таблицу;
- загрузить в неё данные из raw;
- проверить результат через чтение таблицы и осмотр артефактов хранения.
Checkpoint: студент умеет создать и заполнить Iceberg-таблицу и понимает, что таблица в Lakehouse не сводится к одному каталогу с файлами.
Модуль 5. Слой silver и воспроизводимые трансформации
Рабочее название ноутбука: 05_silver_layer.ipynb
Зачем нужен: научить строить простой, понятный и воспроизводимый pipeline raw -> bronze -> silver.
Содержание:
- базовые трансформации и очистка данных;
- явная фиксация правил преобразования;
- разделение ответственности между слоями;
- проверки качества на уровне строк, схемы и агрегатов.
Практика студента:
- собрать
silverизbronze; - нормализовать часть полей;
- добавить простые проверки результата.
Checkpoint: студент может воспроизводимо построить silver и объяснить, чем bronze отличается от silver.
Модуль 6. Одна таблица, два движка: Spark и Trino
Рабочее название ноутбука: 06_spark_and_trino_on_same_table.ipynb
Зачем нужен: закрепить идею разделения вычислительных движков и показать, что данные не нужно копировать между системами.
Содержание:
- чтение одной и той же Iceberg-таблицы из Spark и Trino;
- роль общего каталога;
- простые SQL-проверки в Trino;
- ограничение темы: курс не уходит в глубокое сравнение движков.
Практика студента:
- записать таблицу через Spark;
- прочитать ту же таблицу через Trino;
- сверить результаты и ответить, почему это работает.
Checkpoint: студент понимает, почему Spark может писать, а Trino читать ту же таблицу без копирования данных.
Модуль 7. Безопасная работа с таблицами: schema evolution и time travel
Рабочее название ноутбука: 07_safe_table_changes.ipynb
Зачем нужен: научить не ломать таблицы вслепую и пользоваться базовыми защитными механизмами.
Содержание:
- добавление и изменение схемы на базовом уровне;
- влияние schema evolution на downstream-чтение;
- snapshots и time travel;
- разбор типовых ошибок новичка: неаккуратный
overwrite, слепая перезапись, неявные изменения типов.
Практика студента:
- добавить новую колонку или безопасно изменить схему;
- посмотреть историю snapshot-ов;
- прочитать предыдущее состояние таблицы после намеренно "неудачного" изменения.
Checkpoint: студент умеет делать базовые изменения схемы, смотреть историю таблицы и использовать time travel как страховку.
Модуль 8. Базовое обслуживание таблиц и финальная практика
Рабочее название ноутбука: 08_maintenance_and_final_lab.ipynb
Зачем нужен: завершить курс рабочим циклом поддержки таблицы и собрать все изученное в одну практику.
Содержание:
- проблема мелких файлов;
- базовый
compaction; - базовый
vacuum/ cleanup старых версий; - короткая параллель с обслуживанием
Greenplum AppendOnly-таблиц; - финальный мини-сценарий:
raw -> bronze -> silver -> проверка через Trino -> безопасное изменение -> обслуживание.
Практика студента:
- выполнить compaction на учебной таблице;
- очистить старые версии в контролируемом сценарии;
- пройти финальный end-to-end checkpoint.
Checkpoint: студент выполняет полный учебный сценарий и может объяснить, зачем нужны compaction и cleanup в прикладной работе.
6. Что получает студент по итогам курса
После прохождения программы студент:
- Поднимает локальный стенд и диагностирует типовые проблемы на старте.
- Понимает различие между
storage,catalogиcompute. - Умеет загрузить raw-данные и прочитать их в Spark.
- Умеет создать и заполнить Iceberg-таблицу.
- Умеет построить простой поток
raw -> bronze -> silver. - Умеет читать одну и ту же таблицу из
SparkиTrino. - Умеет выполнять базовые безопасные операции: schema evolution, snapshots/time travel, compaction, vacuum.
7. Что не входит в первую версию курса
Следующие темы сознательно исключены из основного плана и могут стать отдельным расширением:
gold-слой и полноценные бизнес-витрины;- партиционирование и
partition pruningкак отдельная обязательная тема v1; - performance tuning и физический дизайн таблиц как самостоятельный модуль;
MERGE, row-level deletes, update-heavy сценарии;- streaming,
Kafka,CDC,Airflow,NiFi; - deep dive во внутренности
Icebergна уровне спецификации; - production security, governance, multi-user setup, Kubernetes и облака.
Существующие demo-артефакты по партиционированию в репозитории считаются legacy-материалами и не входят в обязательный трек первой версии курса.
8. Следующий уровень детализации
После утверждения этой структуры следующий документ должен описывать не "темы вообще", а каркас учебных артефактов:
- состав стартовой документации и порядок чтения до первого запуска, включая получение data bundle;
- список ноутбуков и их точные learning objectives;
- обязательные демонстрации, самостоятельные задания и checkpoints по каждому уроку;
- набор вспомогательных
src/sparkиsrc/trino-скриптов, включая загрузку датасета и диагностические шаги для модуля 2; - правила сброса стенда и повторного прохождения практик.