Pin версию Spark/Scala/Java, shade jars конфликтов, для PySpark — lockfile и cluster Python, CI на совместимость, immutable image job.
Разбор
- Conflict Guava/Netty — классика.
- Не полагайтесь на «что стоит на кластере».
- Документируйте spark-version matrix.
- Canary job на новой версии runtime.
Итог
Воспроизводимость = pinned runtime + зависимости + canary upgrade.