Не зная больше о вашем сценарии использования и ресурсах, трудно дать вам однозначный ответ. Однако это, скорее всего, отрицательно, несмотря на то, что Spark будет обращаться к источнику дважды.
В целом, необходимо учитывать несколько факторов:
Итак ...
Означает ли .count, что df будет вычислен дважды?
В некоторой степени в зависимости от формата ввода. Простые текстовые форматы (такие как JSON или CSV) потребуют более повторной работы, чем двоичные источники.
нужно ли кэшировать исходный фрейм данных
Обычно нет, если только вы не знаете, что стоимость извлечения данных из хранилища оправдывает недостатки, перечисленные выше.
Принятие окончательного решения требует хорошего понимания вашего конвейера (прежде всего того, как данные будут обрабатываться в нисходящем направлении и как кеширование влияет на это) и показателей, которые вы хотите оптимизировать (задержка, общее время выполнения, денежные затраты на запуск необходимых ресурсов).
Вы должны также рассмотреть альтернативы count
, такие как обработка InputMetrics
или использование Accumulators
.