Обзор
Что такое Spark?
Apache Spark — это фреймворк для расчетов на больших данных (джойнов, группировок, фильтраций и т. д.).
Spark обрабатывает данные в оперативной памяти. Ключевое отличие процессинга в памяти от "классического" MapReduce образца 2005 года в том, что данные минимально затрагивают диск при работе, а значит, минимизируются расходы на IO — самую медленную часть процессинга. Для одиночной Map операции эффект от использования Spark не будет заметен. Но уже для одного каскада Map и Reduce удается избежать записи промежуточных результатов на диск при условии, что памяти будет достаточно.
Для каждого последующего каскада MapReduce экономия нарастает, появляется возможность кешировать результаты. Для больших и сложных аналитических пайплайнов рост производительности будет многократным.
Также Spark вооружен полноценным оптимизатором запросов Catalyst, который планирует выполнение и учитывает:
- расположение и объёмы входных данных;
- протягивание предикатов до файловой системы;
- целесообразность и порядок шагов при исполнении запроса;
- набор атрибутов в конечной таблице;
- локальность данных при обработке;
- возможную конвейеризацию вычислений.
Что такое SPYT?
Spark over YTsaurus (SPYT) позволяет запускать Spark-кластер на вычислительных мощностях YTsaurus. Кластер запускается в Vanilla-операции YTsaurus, затем забирает некоторое количество ресурсов из квоты и занимает их постоянно. Spark может читать как статические, так и динамические таблицы YTsaurus, делать на них расчеты и писать результат в статическую таблицу.
Текущая базовая версия Spark - 3.2.2.
На каких языках можно писать?
На Spark можно писать на одном из трех языков: Python, Java и Scala.
Когда использовать SPYT?
SPYT стоит выбрать в любом из следующих случаев:
- при разработке на Java с использованием MapReduce в YTsaurus;
- при оптимизации производительность пайплайна на YTsaurus с двумя и более джойнами или группировками.
SPYT не стоит выбирать, если:
- существует необходимость в обработке более 10 ТБ данных в одной транзакции;
- процессинг сводится к единичным Map или MapReduce.