Обзор

Что такое 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.

Как получить доступ к SPYT?

  1. Завести кластер Spark.
  2. Использовать кластер Spark несколькими способами:
    • Писать код в Jupyter.
    • Писать код на Python и запускать на кластере.
    • Писать код на Java и запускать на кластере.
    • Писать код на Scala и запускать на кластере.