Spark использует концепцию «ленивой оценки».Ленивая оценка означает, что Spark будет ждать до самого последнего момента, чтобы выполнить график инструкций вычисления, обычно, чтобы искать способы улучшить план выполнения.Ленивая оценка включает в себя концепции преобразований и действий.Преобразование (такое как distinct()
, sort()
, sum()
) будет отмечено Spark и встроено в логический план.Этот план называется DAG (направленный ациклический граф).Нам нужно вызвать действие, чтобы Спарк выполнил DAG.Примеры действий включают count()
, show()
или collect()
.Действия - это, по сути, все, что возвращает результат наших преобразований данных обратно в нативный объект на соответствующем языке, в данном случае Python.
В нашем примере Spark фактически не выполняет DAG при вызове distinct()
.Он выполняет DAG, когда вы вызываете действие после отличного, такого как distinct().collect()
или distinct().show()
или distinct().count()
.Кроме того, collect()
- это просто функция, которая возвращает DataFrame в виде объектов списка строк Python, как указано здесь ... collect()
.Вы можете выбрать другие действия, которым нужно следовать distinct()
, collect()
- это просто часто используемый пример в учебных пособиях, поскольку он показывает структуру строки в наборе данных.