В прошлом уроке filter и map не запустили ни одного задания: в Spark UI появлялось задание только на collect(). Это не случайность, а главный принцип Spark. Пока вы описываете, что сделать с данными, Spark ничего не делает. Он начинает работать, только когда вы просите результат.
Список покупок
Вы собираетесь в магазин и пишете список: молоко, хлеб, сыр, ещё молоко для блинов. Пока вы пишете, никуда не ходите. Когда список готов, вы смотрите на него целиком и замечаете, что молоко можно купить один раз, двумя пакетами, а сыр есть в магазине у дома, и в большой супермаркет идти не нужно.
Если бы вы бежали в магазин за каждым пунктом сразу, как его вспомнили, такие улучшения были бы невозможны. Spark пишет список, а в магазин идёт по команде.
Трансформации и действия
Все операции Spark делятся на два вида.
Трансформация описывает новый набор данных из старого: filter, map, flatMap, а у DataFrame select, filter, groupBy, join. Трансформация мгновенная: Spark только записывает шаг в план.
Действие требует результат: count(), collect(), take(n), show(), запись в файл. Только действие запускает задание, и тогда выполняются все трансформации, которые к нему ведут.
Такой подход называется ленивым вычислением.
урок из курса
Урок из курса «Data Engineering». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.