Spark vs Flink на собеседовании Data Engineer
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем разбирать на собесе
«Какой выбрать?» — частый question в архитектурном round. На собесе DE: «pros / cons», «when not to use Spark».
Архитектурные отличия
Spark. Built around RDD / DataFrame. Originally batch, streaming added later.
Flink. Built around DataStream. Streaming-first, batch — частный случай unbounded stream с конечным размером.
Streaming
Spark. Micro-batch (1s-30s). С 3.x есть Continuous mode (experimental, < 1ms), но редко используется в проде.
Flink. True streaming, event-by-event. < 100ms latency.
Watermarks — оба поддерживают. Flink более mature event time semantics.
Batch
Spark. Исторический сильный fit. Огромный ecosystem (MLlib, GraphX, Delta Lake).
Flink. Унифицированный API DataStream может делать batch (bounded streams). Менее оптимизирован, чем Spark batch.
В РФ: Spark — стандарт batch. Flink в batch почти не используют.
SQL
Spark SQL. Зрелый, оптимизированный (Catalyst). Стандартный choice для analytics.
Flink SQL. Растёт, но менее adopted. Хорош для streaming aggregations.
Memory и performance
Spark. JVM memory model. Tungsten — off-heap. На batch — отлично оптимизирован.
Flink. Off-heap memory с native serialization. Меньший footprint per task. Хороший для long-running streaming.
State. Spark stores в driver / executor memory. Flink — in checkpointed state backends (RocksDB).
Когда что
Spark подходит:
- Batch ETL / dbt-like transforms.
- ML training.
- Ad-hoc analytics.
- Когда команда знает Spark.
Flink подходит:
- Real-time analytics с low latency.
- Complex event processing (CEP).
- Long-running stateful streams.
- IoT / sensor data.
Гибрид.
- Spark для batch, Flink для real-time.
- Шарят storage (Kafka, Iceberg).
В России: Spark dominant. Flink — choice для конкретных streaming задач.
Связанные темы
- Apache Flink на собесе DE
- Spark Structured Streaming для DE
- Spark RDD vs DataFrame для DE
- Kafka Streams для DE
- Подготовка к собесу Data Engineer
FAQ
Один может заменить другой?
В большинстве сценариев — нет. У них разный sweet spot. На границе — possible, но trade-off.
Это официальная информация?
Нет. Статья основана на документации Apache Spark / Flink.
Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.