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 перед коммитом.
This commit is contained in:
@@ -60,7 +60,7 @@ graph LR
|
|||||||
- MinIO Console: `http://localhost:9001`
|
- MinIO Console: `http://localhost:9001`
|
||||||
- JupyterLab (если включён): `http://localhost:8888`
|
- JupyterLab (если включён): `http://localhost:8888`
|
||||||
|
|
||||||
4. Для пошаговых лабораторных работ см. файл `HOWTO.md`.
|
4. Актуальная структура курса описана в `docs/course_program.md`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -381,7 +381,7 @@ spark.sql("INSERT INTO lakehouse.default.spark_table VALUES (1, 'Alice'), (2, 'B
|
|||||||
* Добавить отдельные каталоги Trino (например, `hive`, `tpch`) для демонстрации федеративных запросов.
|
* Добавить отдельные каталоги Trino (например, `hive`, `tpch`) для демонстрации федеративных запросов.
|
||||||
* Добавить пример интеграции с BI-инструментом (DBeaver/Metabase/Superset) поверх Trino.
|
* Добавить пример интеграции с BI-инструментом (DBeaver/Metabase/Superset) поверх Trino.
|
||||||
|
|
||||||
Для пошаговых учебных сценариев (лабораторных работ) см. файл `HOWTO.md`.
|
Актуальная структура курса описана в `docs/course_program.md`. Старый `HOWTO` сохранён как архивный материал в `docs/archive/legacy_howto.md`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Executable → Regular
+40
-20
@@ -1,3 +1,23 @@
|
|||||||
|
# Legacy HOWTO: ранние лабораторные по Lakehouse-стенду
|
||||||
|
|
||||||
|
Этот документ сохранён как архивный материал и не является актуальным учебным маршрутом для курса `Lakehouse без магии`.
|
||||||
|
|
||||||
|
Зачем он сохранён:
|
||||||
|
|
||||||
|
* в нём есть полезные ранние учебные сценарии и привязка к существующим demo-скриптам;
|
||||||
|
* он помогает понять, как эволюционировал стенд и какие практики уже когда-то обкатывались;
|
||||||
|
* его можно использовать как reference при создании новых ноутбуков и стартовой документации.
|
||||||
|
|
||||||
|
Почему это legacy:
|
||||||
|
|
||||||
|
* документ был написан до текущего PRD и новой программы курса;
|
||||||
|
* он смешивает актуальные темы с темами вне обязательного трека `v1`, например с отдельной лабой про партиционирование;
|
||||||
|
* он не соответствует новой структуре материалов `README -> START_HERE -> course_program -> notebooks`.
|
||||||
|
|
||||||
|
Ниже сохранено исходное содержимое старого `HOWTO.md` почти без изменений.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
# HOWTO: Учебные лабораторные по Lakehouse-стенду
|
# HOWTO: Учебные лабораторные по Lakehouse-стенду
|
||||||
|
|
||||||
Этот файл описывает пошаговые учебные сценарии (лабораторные работы), которые можно выполнять поверх стенда из `docker-compose.yml`.
|
Этот файл описывает пошаговые учебные сценарии (лабораторные работы), которые можно выполнять поверх стенда из `docker-compose.yml`.
|
||||||
@@ -6,29 +26,29 @@
|
|||||||
|
|
||||||
Лабораторки опираются на примеры в `src/`:
|
Лабораторки опираются на примеры в `src/`:
|
||||||
|
|
||||||
- `src/spark/cluster_smoke.py` — проверка, что Spark‑кластер жив.
|
- `src/spark/cluster_smoke.py` — проверка, что Spark-кластер жив.
|
||||||
- `src/spark/iceberg_demo.sql` — первая Iceberg‑таблица в Spark.
|
- `src/spark/iceberg_demo.sql` — первая Iceberg-таблица в Spark.
|
||||||
- `src/spark/iceberg_smoke.py` — Spark создаёт Iceberg‑таблицу и читает её.
|
- `src/spark/iceberg_smoke.py` — Spark создаёт Iceberg-таблицу и читает её.
|
||||||
- `src/trino/iceberg_smoke.sql` — Trino читает таблицу, созданную в Spark.
|
- `src/trino/iceberg_smoke.sql` — Trino читает таблицу, созданную в Spark.
|
||||||
|
|
||||||
Все команды ниже выполняются из корня репозитория.
|
Все команды ниже выполняются из корня репозитория.
|
||||||
|
|
||||||
Краткая карта лабораторных:
|
Краткая карта лабораторных:
|
||||||
|
|
||||||
- **Лаба 0** — стенд поднят, Spark‑кластер жив.
|
- **Лаба 0** — стенд поднят, Spark-кластер жив.
|
||||||
- **Лаба 1** — первая Iceberg‑таблица в Spark.
|
- **Лаба 1** — первая Iceberg-таблица в Spark.
|
||||||
- **Лаба 2** — общий каталог Spark ↔ Trino.
|
- **Лаба 2** — общий каталог Spark ↔ Trino.
|
||||||
- **Лаба 3** — партиционирование и эволюция схемы.
|
- **Лаба 3** — партиционирование и эволюция схемы.
|
||||||
- **Лаба 4** — мини‑ETL поверх Lakehouse (эскиз).
|
- **Лаба 4** — мини-ETL поверх Lakehouse (эскиз).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Лаба 0. Стенд поднят, Spark‑кластер жив
|
## Лаба 0. Стенд поднят, Spark-кластер жив
|
||||||
|
|
||||||
**Цель**
|
**Цель**
|
||||||
|
|
||||||
- Убедиться, что все контейнеры поднялись.
|
- Убедиться, что все контейнеры поднялись.
|
||||||
- Проверить, что Spark‑кластер (master + workers) работает.
|
- Проверить, что Spark-кластер (master + workers) работает.
|
||||||
|
|
||||||
**Предусловия**
|
**Предусловия**
|
||||||
|
|
||||||
@@ -52,7 +72,7 @@
|
|||||||
|
|
||||||
Ожидаем, что `spark-master`, `spark-worker-1`, `spark-worker-2` в статусе `Up`.
|
Ожидаем, что `spark-master`, `spark-worker-1`, `spark-worker-2` в статусе `Up`.
|
||||||
|
|
||||||
3. Запустить smoke‑скрипт кластера из контейнера `spark-master`:
|
3. Запустить smoke-скрипт кластера из контейнера `spark-master`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose exec spark-master \
|
docker compose exec spark-master \
|
||||||
@@ -71,11 +91,11 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Лаба 1. Первая Iceberg‑таблица из Spark
|
## Лаба 1. Первая Iceberg-таблица из Spark
|
||||||
|
|
||||||
**Цель**
|
**Цель**
|
||||||
|
|
||||||
- Создать Iceberg‑таблицу с помощью Spark SQL.
|
- Создать Iceberg-таблицу с помощью Spark SQL.
|
||||||
- Посмотреть файлы таблицы в MinIO (`warehouse/default/demo_tbl/...`).
|
- Посмотреть файлы таблицы в MinIO (`warehouse/default/demo_tbl/...`).
|
||||||
|
|
||||||
**Предусловия**
|
**Предусловия**
|
||||||
@@ -91,7 +111,7 @@
|
|||||||
/opt/spark/bin/spark-sql
|
/opt/spark/bin/spark-sql
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Выполнить учебный SQL‑скрипт:
|
2. Выполнить учебный SQL-скрипт:
|
||||||
|
|
||||||
- Внутри интерактивной сессии `spark-sql`:
|
- Внутри интерактивной сессии `spark-sql`:
|
||||||
|
|
||||||
@@ -127,7 +147,7 @@
|
|||||||
|
|
||||||
возвращает данные.
|
возвращает данные.
|
||||||
|
|
||||||
- В MinIO видна структура Iceberg‑таблицы: служебные файлы и файлы данных.
|
- В MinIO видна структура Iceberg-таблицы: служебные файлы и файлы данных.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -135,7 +155,7 @@
|
|||||||
|
|
||||||
**Цель**
|
**Цель**
|
||||||
|
|
||||||
- Показать, что Spark и Trino используют общий Iceberg‑каталог (метаданные в Postgres, данные в MinIO).
|
- Показать, что Spark и Trino используют общий Iceberg-каталог (метаданные в Postgres, данные в MinIO).
|
||||||
- Создать таблицу из Spark и прочитать её через Trino.
|
- Создать таблицу из Spark и прочитать её через Trino.
|
||||||
|
|
||||||
**Предусловия**
|
**Предусловия**
|
||||||
@@ -145,7 +165,7 @@
|
|||||||
|
|
||||||
**Шаги**
|
**Шаги**
|
||||||
|
|
||||||
1. Создать таблицу и записать данные из Spark (PySpark‑скрипт):
|
1. Создать таблицу и записать данные из Spark (PySpark-скрипт):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose exec spark-master \
|
docker compose exec spark-master \
|
||||||
@@ -169,7 +189,7 @@
|
|||||||
|
|
||||||
3. Прочитать ту же таблицу из Trino:
|
3. Прочитать ту же таблицу из Trino:
|
||||||
|
|
||||||
- Вариант через заранее скопированный SQL‑файл (как в README):
|
- Вариант через заранее скопированный SQL-файл (как в README):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose cp src/trino/iceberg_smoke.sql trino:/tmp/
|
docker compose cp src/trino/iceberg_smoke.sql trino:/tmp/
|
||||||
@@ -211,7 +231,7 @@
|
|||||||
|
|
||||||
**Подготовленные примеры**
|
**Подготовленные примеры**
|
||||||
|
|
||||||
- `src/spark/partitioned_table_demo.sql` — создание партиционированной Iceberg‑таблицы и вставка данных.
|
- `src/spark/partitioned_table_demo.sql` — создание партиционированной Iceberg-таблицы и вставка данных.
|
||||||
- `src/spark/schema_evolution_demo.sql` — демонстрация `ALTER TABLE` и добавления колонок.
|
- `src/spark/schema_evolution_demo.sql` — демонстрация `ALTER TABLE` и добавления колонок.
|
||||||
- `src/trino/schema_evolution_demo.sql` — чтение той же таблицы с эволюцией схемы из Trino.
|
- `src/trino/schema_evolution_demo.sql` — чтение той же таблицы с эволюцией схемы из Trino.
|
||||||
- `notebooks/03_partitioning_and_schema_evolution.ipynb` — интерактивный разбор тех же примеров в Jupyter.
|
- `notebooks/03_partitioning_and_schema_evolution.ipynb` — интерактивный разбор тех же примеров в Jupyter.
|
||||||
@@ -271,7 +291,7 @@
|
|||||||
docker compose exec trino trino --file /tmp/schema_evolution_demo.sql
|
docker compose exec trino trino --file /tmp/schema_evolution_demo.sql
|
||||||
```
|
```
|
||||||
|
|
||||||
**Вариант B: через Jupyter‑ноутбук**
|
**Вариант B: через Jupyter-ноутбук**
|
||||||
|
|
||||||
- Открыть `http://localhost:8888` и запустить ноутбук `03_partitioning_and_schema_evolution.ipynb`.
|
- Открыть `http://localhost:8888` и запустить ноутбук `03_partitioning_and_schema_evolution.ipynb`.
|
||||||
- Ноутбук:
|
- Ноутбук:
|
||||||
@@ -281,12 +301,12 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Лаба 4. Мини‑ETL поверх Lakehouse (эскиз)
|
## Лаба 4. Мини-ETL поверх Lakehouse (эскиз)
|
||||||
|
|
||||||
Идея лабы — собрать end-to-end сценарий:
|
Идея лабы — собрать end-to-end сценарий:
|
||||||
|
|
||||||
- есть сырые данные (CSV/JSON) в S3/MinIO;
|
- есть сырые данные (CSV/JSON) в S3/MinIO;
|
||||||
- Spark читает raw‑данные, чистит и пишет в Iceberg‑таблицу;
|
- Spark читает raw-данные, чистит и пишет в Iceberg-таблицу;
|
||||||
- Trino делает поверх неё аналитику.
|
- Trino делает поверх неё аналитику.
|
||||||
|
|
||||||
Планируемые компоненты:
|
Планируемые компоненты:
|
||||||
Reference in New Issue
Block a user