- Зачем: - нужен воспроизводимый вход в курс и единое место хранения планов по модулям. - Что: - добавлены `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`.
8.6 KiB
8.6 KiB
In [ ]:
from spark.cluster_smoke import (
create_spark_session,
format_smoke_report,
run_cluster_smoke,
)
spark = create_spark_session(app_name="module-01-environment-and-smoke-test")
spark
In [ ]:
connection_details = {
"app_name": spark.sparkContext.appName,
"master_url": spark.sparkContext.master,
"default_parallelism": spark.sparkContext.defaultParallelism,
"spark_version": spark.version,
}
connection_details
In [ ]:
smoke_report = run_cluster_smoke(spark)
print(format_smoke_report(smoke_report))
smoke_report
In [ ]:
service_roles = {
# Заполни значения самостоятельно: storage, catalog, compute или entrypoint.
"MinIO": "TODO",
"PostgreSQL": "TODO",
"Spark": "TODO",
"Trino": "TODO",
"Jupyter": "TODO",
}
service_roles
In [ ]:
spark.stop()