Перейти к содержимому
На этой странице

Основы Spark

Все темы Data Engineer

Spark📝 Вопросы


Что такое Big Data?

“Big Data” - это термин, который обозначает обширные объемы данных, которые традиционные методы обработки данных не могут эффективно обрабатывать. Эти данные характеризуются тремя основными свойствами, известными как “3V”: объем (великое количество данных), скорость (быстрота генерации и обработки данных) и разнообразие (широкий спектр типов данных). Обработка Big Data требует специальных инструментов и подходов, таких как распределенные системы хранения и обработки данных, машинное обучение и аналитика больших данных.


С какими объёмами приходилось работать?

Укажите реальный объём данных и контекст: размер входа, число строк, объём за день, размер кластера и время обработки. Если работали только с небольшими наборами, так и скажите.


Что такое Spark Hadoop Hive?

Spark, Hadoop и Hive - это технологии, используемые для обработки и анализа больших объемов данных.

  1. Apache Spark - это высокопроизводительный фреймворк для обработки данных в памяти. Он предоставляет API на нескольких языках программирования для распределенной обработки данных, включая Python, Java и Scala. Spark может использоваться для выполнения широкого спектра задач, включая обработку потоковых данных, машинное обучение и аналитику данных.

  2. Apache Hadoop - это фреймворк для распределенной обработки и хранения больших данных. Hadoop включает в себя несколько компонентов, включая Hadoop Distributed File System (HDFS) для хранения данных и MapReduce для обработки данных в распределенной среде.

  3. Apache Hive - это инфраструктура для работы с данными в Hadoop, которая предоставляет SQL-подобный язык запросов, называемый HiveQL. Hive позволяет аналитикам и разработчикам выполнять аналитические запросы и агрегировать данные в Hadoop, используя привычный SQL-подход.


Объясните архитектуру Apache Spark и основные компоненты.

Архитектура Apache Spark состоит из следующих основных компонентов:

  1. SparkContext: Главный объект, управляющий кластером и координирующий выполнение задач.

  2. Driver Program: Программа, запускающая SparkContext и управляющая процессом выполнения приложений.

  3. Cluster Manager: Выделяет ресурсы приложениям, например Spark standalone, YARN или Kubernetes.

  4. Executors: Процессы приложения на рабочих узлах, выполняющие задачи и хранящие данные в памяти или на диске.

  5. Tasks: Единицы работы, выполняемые на исполнителях.

  6. RDD (Resilient Distributed Dataset): Основная абстракция данных, представляющая собой распределенную коллекцию неизменяемых объектов.

  7. Transformations and Actions: Операции над RDD для выполнения вычислений.


Какова роль драйвера и исполнителей (executors) в Spark?

Основные функции драйвера и исполнителя:

  • Driver: Управляет жизненным циклом приложения, координирует выполнение задач, создает SparkContext и генерирует план выполнения задач (DAG). Он также собирает результаты вычислений и управляет выполнением действий.

  • Executors: Исполнители выполняют задачи, распределенные драйвером, и хранят данные в памяти или на диске. Каждый исполнитель работает в своем собственном процессе на узле кластера и может выполнять несколько задач параллельно.


Как работает процесс планирования задач в Spark?

Процесс планирования задач в Spark включает следующие шаги:

  1. Создание DAG: Драйвер создает Directed Acyclic Graph (DAG) из трансформаций RDD.

  2. Разбиение DAG на этапы ( Stages ): DAG делится на этапы, которые представляют собой группы задач, не требующих обмена данными между узлами.

  3. Создание задач ( Tasks ): Каждый этап делится на задачи, соответствующие партициям данных.

  4. Отправка задач: драйвер непосредственно отправляет задачи executor-процессам. Кластерный менеджер выделяет ресурсы для их запуска.

  5. Выполнение задач: Исполнители выполняют задачи и возвращают результаты драйверу.

  6. Обработка результатов: Драйвер обрабатывает результаты и продолжает выполнение следующих этапов до завершения приложения.


Как Spark планирует чтение и запись файлов?

При чтении Spark перечисляет файлы, делит splittable данные на input partitions, применяет partition pruning, column pruning и поддерживаемый predicate pushdown. Каждую partition читает task. При записи tasks создают output files, а commit protocol публикует успешный результат и обрабатывает попытки; детали зависят от filesystem и table format. Слишком много входных или выходных мелких файлов перегружает listing, scheduler и metadata. Чтение и запись проверяют с учетом filesystem и table format, потому что commit semantics между ними различаются.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Data Engineer, ETL-разработчик. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.