TL; DR 1) и 2) обычно можно избежать, но не должно причинять вам вреда (игнорируя стоимость оценки), 3) обычно является вредным Программирование культа грузов практика.
Без cache
Вызов только count
в большинстве случаев расточителен.Хотя регистрация не всегда проста, ее можно заменить информацией, полученной от слушателей (здесь приведен пример и пример для RDD ), а требования к потоку управления обычно (не всегда) опосредуются улучшенной схемой конвейера.
В одиночку это не окажет никакого влияния на план выполнения (план выполнения для count обычно в любом случае отличается от плана выполнения родительского элемента. Обычно Spark выполняет как можно меньше работы, поэтому он удаляет части выполненияплан, который не требуется для вычисления количества).
С cache
:
count
с cache
- это плохая практика, наивно копируемая из шаблонов, используемых сRDD API.Это уже спорно с RDDs
, но с DataFrame
может сломать много внутренних оптимизаций (выбор и сказуемое Pushdown) и технически говоря, даже не гарантируется работа .