docs(course): integrate Spark setup into the module flow

This commit is contained in:
ddadmin committed 2026-09-15 09:12:28 -04:00
1 parent 16f76d63fc
commit 9d5b0b716e
9 files changed
+122 -214

No files matched your search

+16 -28
View File
@@ -10,8 +10,6 @@
**Ориентир на модуль:** в среднем `~1.5 часа`, но финальная практика может занять дольше.
В модуле 3 дополнительно предусмотрены 20–30 минут на настройку Spark-сессии; ориентир на весь модуль — около 2 часов. Общие `~12-15 часов` пока остаются предварительной оценкой: её нужно уточнить после самостоятельного прохождения студентом.
**Сквозной учебный кейс:** `NYC TLC Yellow Taxi Trip Records` + `Taxi Zone Lookup`.
**Методика каждого урока:** `объяснение -> демонстрация -> самостоятельное повторение -> checkpoint`.
@@ -71,12 +69,11 @@
| --- | --- | --- |
| `LO1`. Понимание различий между `storage`, `catalog`, `compute` | 1, 2, 6 | checkpoints модулей 2 и 6 |
| `LO2`. Умение поднять и диагностировать стенд | 1 | checkpoint модуля 1 |
| `LO3`. Умение загрузить raw-данные и проверить схему | 3 | checkpoint модуля 3 |
| `LO3`. Умение подключиться к Spark, загрузить 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 |
| `LO8`. Умение настроить Spark-сессию и проверить подключение | 3 | checkpoint практики настройки в начале модуля 3 |
## 5. Верхнеуровневая структура практической части
@@ -127,35 +124,27 @@
**Рабочее название ноутбука:** `03_raw_ingest_and_first_read.ipynb`
**Зачем нужен:** научить создавать Spark-сессию для нашего кластера, затем загружать и читать raw-данные.
**Зачем нужен:** пройти путь от подключения к Spark до первого чтения и проверки исходных файлов Taxi.
**Ориентир по времени:** около 2 часов, из них 20–30 минут на подготовку Spark-сессии.
**Содержание:**
* обязательная практика «Как настроен Spark в нашем стенде» после ментальной модели модуля 2, до raw-ingest (20–30 минут);
* роли `SparkSession`, `SparkContext`, driver и executors; `master`, `appName`, `getOrCreate`, отличие `local` от кластера;
* настройки из `spark-defaults.conf`, параметров запуска и кода; подготовленный каталог Iceberg и доступ к MinIO;
* проверка фактического master и выбранных несекретных настроек; повторная ячейка, остановка сессии и перезапуск ядра;
* изменение часового пояса с восстановлением исходного значения и смена имени приложения при новом запуске; без подбора памяти, executors, shuffle или GC;
* работа с заранее подготовленным локальным data bundle из onboarding-документации;
* явная загрузка исходных `PARQUET`-файлов в raw-зону;
* чтение raw-данных через Spark;
* проверка схемы, типов и базового качества данных;
* обсуждение того, почему raw лучше не "чинить на месте" и почему датасет не должен скачиваться "из интернета из ноутбука".
* подключение к Spark-кластеру: сессия, контекст, driver и executors; настройки из файла, параметров запуска и кода;
* повторное использование сессии, остановка и перезапуск ядра; изменение настроек во время работы;
* подготовленный data bundle и загрузка исходных файлов в raw-зону MinIO;
* чтение через Spark, проверка схемы и типов;
* базовые метрики, аномалии и причины сохранять raw без изменений.
**Практика студента:**
* выполнить демонстрацию настройки сессии, затем заполнить шаблон с адресом кластера и именем приложения, используя подготовленный каталог;
* проверить подключение на собственной маленькой Iceberg-таблице, прочитать две строки и удалить только эту таблицу; данные модуля 2 не нужны;
* объяснить происхождение настроек и повторить создание сессии после перезапуска ядра;
* проверить состав локально полученного набора `NYC Taxi`;
* загрузить его в raw-зону `MinIO`;
* прочитать несколько месяцев `NYC Taxi`;
* проверить схему и посчитать базовые метрики;
* найти простые аномалии или проблемные значения.
* заполнить шаблон сессии с подготовленным каталогом Iceberg; проверить подключение на собственной временной таблице и удалить ее;
* изменить и восстановить часовой пояс, сравнить повторный вызов builder-а с новым запуском приложения;
* проверить состав data bundle и загрузить несколько месяцев Taxi в MinIO;
* прочитать поездки и справочник зон, проверить схему и посчитать метрики;
* найти проблемные значения и объяснить, почему их сохраняют в raw.
**Checkpoint настройки:** master равен `spark://spark-master:7077`, имя приложения совпадает с заданным, из собственной Iceberg-таблицы прочитаны строки `0` и `1`, временная таблица удалена. Часовой пояс восстановлен. Студент объясняет, что задал в коде, что взял из стенда, где выполняются вычисления и какие ячейки повторит после перезапуска ядра.
**Checkpoint raw-ingest:** студент умеет загрузить учебный набор в raw-зону, прочитать raw-данные, проверить схему и объяснить, почему raw-слой нужен как воспроизводимая точка входа.
**Checkpoint:** студент создает сессию для кластера, объясняет источники настроек и место выполнения заданий, умеет повторить подключение в новом ядре. Загружает учебный набор в raw-зону, читает его через Spark, проверяет схему и объясняет, зачем сохранять исходные данные.
### Модуль 4. Первая рабочая Iceberg-таблица и слой bronze
@@ -269,12 +258,11 @@
1. Поднимает локальный стенд и диагностирует типовые проблемы на старте.
2. Понимает различие между `storage`, `catalog` и `compute`.
3. Умеет загрузить raw-данные и прочитать их в Spark.
3. Подключается к Spark-кластеру, загружает raw-данные и проверяет их после чтения.
4. Умеет создать и заполнить Iceberg-таблицу.
5. Умеет построить простой поток `raw -> bronze -> silver`.
6. Умеет читать одну и ту же таблицу из `Spark` и `Trino`.
7. Умеет выполнять базовые безопасные операции: schema evolution, snapshots/time travel, compaction, vacuum.
8. Создаёт Spark-сессию для кластера, проверяет настройки и понимает, когда нужен новый запуск.
## 7. Что не входит в первую версию курса