docs(spark): simplify session setup explanations
This commit is contained in:
1 parent
91a5c85469
commit
a5244f8a0b
6 files changed
+30
-16
No files matched your search
@@ -56,9 +56,8 @@ graph TB
|
|||||||
| `Trino` | Compute — ad hoc SQL, чтение тех же таблиц |
|
| `Trino` | Compute — ad hoc SQL, чтение тех же таблиц |
|
||||||
| `JupyterLab` | Точка входа — практические ноутбуки курса |
|
| `JupyterLab` | Точка входа — практические ноутбуки курса |
|
||||||
|
|
||||||
Ноутбуки создают `SparkSession` с именем приложения, а подключение к
|
Ноутбуки подключаются к Spark-кластеру с
|
||||||
`spark://spark-master:7077` и общие настройки Iceberg/MinIO получают из
|
[готовыми настройками стенда](./docs/stack_reference.md#spark).
|
||||||
`spark/spark-defaults.conf`.
|
|
||||||
|
|
||||||
## С чего начать
|
## С чего начать
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -108,11 +108,15 @@ notebooks/01_environment_and_smoke_test.ipynb
|
|||||||
- `./src` смонтирован read-only как `/opt/src`;
|
- `./src` смонтирован read-only как `/opt/src`;
|
||||||
- `./data` смонтирован read-only как `/opt/data`;
|
- `./data` смонтирован read-only как `/opt/data`;
|
||||||
- `PYTHONPATH=/opt/src`, поэтому helper-скрипты из `src/` доступны для импорта в ноутбуках;
|
- `PYTHONPATH=/opt/src`, поэтому helper-скрипты из `src/` доступны для импорта в ноутбуках;
|
||||||
- новое ядро Jupyter читает `spark/spark-defaults.conf`: из него `SparkSession` получает адрес кластера `spark://spark-master:7077` и настройки Iceberg/MinIO;
|
|
||||||
- повторный запуск ячейки с `getOrCreate()` в том же ядре возвращает существующую сессию; чтобы заново применить стартовые настройки, перезапусти ядро;
|
|
||||||
- первый ноутбук курса: `01_environment_and_smoke_test.ipynb`;
|
- первый ноутбук курса: `01_environment_and_smoke_test.ipynb`;
|
||||||
- локальный учебный data bundle для Модуля 3 должен быть доступен внутри Jupyter по пути `/opt/data/nyc_taxi`.
|
- локальный учебный data bundle для Модуля 3 должен быть доступен внутри Jupyter по пути `/opt/data/nyc_taxi`.
|
||||||
|
|
||||||
|
Ноутбуки берут адрес кластера из
|
||||||
|
[`spark/spark-defaults.conf`](./spark/spark-defaults.conf). Если изменил его,
|
||||||
|
перезапусти ядро и заново создай Spark-сессию. Повторный запуск ячейки с
|
||||||
|
`getOrCreate()` использует текущую сессию. При перезапуске ядра переменные Python
|
||||||
|
сбрасываются, а учебные таблицы и файлы сохраняются.
|
||||||
|
|
||||||
## Базовая диагностика
|
## Базовая диагностика
|
||||||
|
|
||||||
### Посмотреть список контейнеров
|
### Посмотреть список контейнеров
|
||||||
|
|||||||
+10
-3
@@ -53,9 +53,16 @@ docker compose down -v
|
|||||||
|
|
||||||
- Master UI: `http://localhost:8080`
|
- Master UI: `http://localhost:8080`
|
||||||
- Worker UI: `http://localhost:8081` и `http://localhost:8082`
|
- Worker UI: `http://localhost:8081` и `http://localhost:8082`
|
||||||
- Spark master endpoint внутри сети compose: `spark://spark-master:7077`
|
- Адрес Spark master внутри сети Docker Compose: `spark://spark-master:7077`
|
||||||
- `spark/spark-defaults.conf` задаёт этот endpoint как `spark.master`; новое ядро Jupyter применяет настройку при создании первой `SparkSession`.
|
|
||||||
- `SparkSession.builder.getOrCreate()` в уже работающем ядре возвращает существующую сессию. Для повторного чтения стартовых настроек нужно перезапустить ядро.
|
Адрес кластера (`spark.master`) и настройки доступа к Iceberg и MinIO заданы в
|
||||||
|
[`spark/spark-defaults.conf`](../spark/spark-defaults.conf). Docker подключает этот
|
||||||
|
файл к контейнеру Jupyter как `/opt/spark/conf/spark-defaults.conf`.
|
||||||
|
|
||||||
|
При первом вызове `getOrCreate()` Spark читает настройки и создает сессию.
|
||||||
|
Повторный вызов использует уже работающую сессию. Если изменил адрес кластера
|
||||||
|
или настройки в файле, перезапусти ядро ноутбука и снова выполни ячейки
|
||||||
|
с импортами и созданием сессии.
|
||||||
|
|
||||||
Пример запуска smoke-скрипта:
|
Пример запуска smoke-скрипта:
|
||||||
|
|
||||||
|
|||||||
+10
-5
@@ -1,11 +1,11 @@
|
|||||||
# План развития курса «Lakehouse без магии»
|
# План развития курса «Lakehouse без магии»
|
||||||
|
|
||||||
Статус: ближайшие доработки определены, реализация впереди.
|
Статус: исправление подключения Spark готово к проверке; остальные работы запланированы.
|
||||||
Последнее обновление: 2026-09-15.
|
Последнее обновление: 2026-09-15.
|
||||||
|
|
||||||
Здесь собираем отзывы студентов, выбираем следующие улучшения и объясняем их порядок. Подробные задания, критерии приёмки и актуальный статус исполнения хранятся в [Gitea Issues](https://git.dementev.space/ddmitry/mini-lakehouse-lab/issues).
|
Здесь собираем отзывы студентов, выбираем следующие улучшения и объясняем их порядок. Подробные задания, критерии приёмки и актуальный статус исполнения хранятся в [Gitea Issues](https://git.dementev.space/ddmitry/mini-lakehouse-lab/issues).
|
||||||
|
|
||||||
Текущие рамки курса задаёт [PRD](../docs/course_prd.md), а состав уроков — [программа](../docs/course_program.md). Запись в этом плане означает будущую работу. При реализации изменения сначала обновляем соответствующий канонический документ, затем учебные материалы и ссылки на них.
|
Текущие рамки курса задаёт [PRD](../docs/course_prd.md), а состав уроков — [программа](../docs/course_program.md). Статус каждой работы указан ниже. При реализации изменения сначала обновляем соответствующий канонический документ, затем учебные материалы и ссылки на них.
|
||||||
|
|
||||||
## Обратная связь
|
## Обратная связь
|
||||||
|
|
||||||
@@ -22,13 +22,18 @@
|
|||||||
|
|
||||||
### 1. Проверить и исправить создание Spark-сессий
|
### 1. Проверить и исправить создание Spark-сессий
|
||||||
|
|
||||||
**Статус:** выполнено в задаче #1.
|
**Статус:** исправление проверено в ветке `1-spark-session-master`, ожидает слияния.
|
||||||
|
|
||||||
**Задача:** [#1 — подключение Spark-сессий в новом ядре](https://git.dementev.space/ddmitry/mini-lakehouse-lab/issues/1).
|
**Задача:** [#1 — подключение Spark-сессий в новом ядре](https://git.dementev.space/ddmitry/mini-lakehouse-lab/issues/1).
|
||||||
|
|
||||||
Проверка в отдельных процессах показала: модуль 1 подключался к кластеру, а модули 2–8 без `spark.master` запускали Spark в `local[*]`. Теперь общий `spark-defaults.conf` задаёт `spark://spark-master:7077`, а helper модуля 1 и остальные ноутбуки используют этот единый источник.
|
В новых процессах модуль 1 подключался к кластеру, а модули 2–8 запускали Spark
|
||||||
|
локально (`local[*]`). В исправлении все восемь ноутбуков берут адрес кластера
|
||||||
|
из `spark/spark-defaults.conf`.
|
||||||
|
|
||||||
**Результат:** каждый ноутбук подключается к ожидаемому Spark-кластеру после перезапуска ядра. Повторный `getOrCreate()` в том же ядре возвращает существующую сессию; это поведение и источник настроек объяснены в onboarding и техническом reference. Подробные проверки сохранены в задаче #1.
|
**Проверено:** инициализация каждого ноутбука в отдельном процессе,
|
||||||
|
вычисление на кластере, повторный `getOrCreate()`, запись и чтение тестовой
|
||||||
|
Iceberg-таблицы. Перед закрытием #1 нужно опубликовать в задаче результаты
|
||||||
|
проверок и их ограничения.
|
||||||
|
|
||||||
### 2. Добавить практику «Как настроен Spark в нашем стенде»
|
### 2. Добавить практику «Как настроен Spark в нашем стенде»
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# spark/spark-defaults.conf
|
# spark/spark-defaults.conf
|
||||||
|
|
||||||
# Все SparkSession из Jupyter подключаются к кластеру по умолчанию
|
# Адрес Spark-кластера для новых сессий
|
||||||
spark.master spark://spark-master:7077
|
spark.master spark://spark-master:7077
|
||||||
|
|
||||||
# Включаем Iceberg extensions
|
# Включаем Iceberg extensions
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ def create_spark_session(
|
|||||||
) -> SparkSession:
|
) -> SparkSession:
|
||||||
"""Создать SparkSession для проверок окружения в Модуле 1.
|
"""Создать SparkSession для проверок окружения в Модуле 1.
|
||||||
|
|
||||||
Функция специально остаётся минимальной и опирается на смонтированный
|
Адрес кластера и настройки Iceberg и MinIO заданы в spark-defaults.conf.
|
||||||
в контейнер `spark-defaults.conf` для Spark/Iceberg-конфигурации.
|
|
||||||
"""
|
"""
|
||||||
return SparkSession.builder.appName(app_name).getOrCreate()
|
return SparkSession.builder.appName(app_name).getOrCreate()
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user