Spark RDD / Datases оцениваются лениво.
Если два отдельных действия зависят от одного и того же RDD / DS, тогда RDD / DS будут оцениваться дважды, что может быть дорогостоящей операцией.
Чтобы уменьшить вероятность этого, мы можем кэшировать / сохранять RDD / DS, чтобы при необходимости второй / последующий раз загружать его из кэша.
.cache будет сохранять RDD / DS после того, какбыл оценен с уровнем хранения MEMORY_AND_DISK.В качестве альтернативы можно использовать .persit, который позволяет полностью контролировать уровень хранилища.
Как общее практическое правило, если вы используете дорогостоящий расчет RDD / DS более одного раза, тогда рассмотрите возможность его кэширования.