Раздел 26 · Data Engineering

Трансформации и действия: ленивость как основа Spark

junior~10 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

В прошлом уроке 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 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.