spark.executor.cores = 5, spark.executor.memory=10G
Это означает, что исполнитель может выполнять 5 задач параллельно.Это означает, что 10 ГБ должны быть распределены между 5 задачами. В среднем эффективно - для каждой задачи будет доступно 2 ГБ.Если все задачи занимают более 2 ГБ, то общая JVM в итоге будет использовать более 10 ГБ, и поэтому YARN уничтожит контейнер.
spark.executor.cores = 1, spark.executor.memory=10G
Это означает, что исполнитель может запустить только 1 задачу.Это означает, что 10 ГБ доступно для 1 задачи полностью.Так что, если задача использует более 2 ГБ, но менее 10 ГБ, она будет работать нормально.Так было в вашей работе, и так получилось.