Использовали ли вы ETL процессы для обработки больших данных
Что проверяют
Был ли у вас настоящий пайплайн данных, а не разовый скрипт в pandas, и понимаете ли вы, что меняется, когда данных становится много. Следом обычно спрашивают, как пайплайн переживает падение посередине и что будет при повторном запуске.
Как отвечать
Каркас с опорой на свой проект:
- источники и объём: откуда данные (базы, API, файлы в S3, Kafka) и сколько строк или гигабайт в сутки. Это сразу задаёт масштаб, называйте реальную цифру;
- инструменты под масштаб: pandas хорош, пока данные влезают в память. Дальше чтение чанками (
chunksize), Polars или DuckDB на одной машине, PySpark на кластере. В PostgreSQL грузят черезCOPY, а не построчнымиINSERT; - оркестрация: Airflow, Dagster или Prefect дают расписание, зависимости между шагами, ретраи и алерты;
- идемпотентность: повторный запуск за тот же период не дублирует данные. Приёмы: перезапись партиции по дате,
INSERT ... ON CONFLICT, staging-таблица с атомарной подменой; - инкрементальность: забирать только новое по
updated_atили через CDC (Debezium), а не выгружать всё каждый раз; - качество данных: проверки схемы и инвариантов (Great Expectations, pandera, тесты dbt), счётчики строк на входе и выходе;
- ELT: часто сырые данные сначала грузят в хранилище (ClickHouse, BigQuery, Snowflake) и трансформируют уже там через dbt. Хорошо, если объясните, почему выбрали свою схему.
Дальше одна конкретная проблема и её решение: упал ночной джоб, съехала схема источника, выросло время загрузки. Цифры нужны ваши, реальные.
Если опыта с большими данными нет, опишите честно то, что было, например регулярную выгрузку на десятки тысяч строк, и расскажите, что изменили бы при росте на порядки.
Где спотыкаются
Называют ETL скрипт, который раз в неделю читает CSV в pandas. Как опыт это нормально, но не как «обработка больших данных», и интервьюер это видит.
Не могут ответить, что будет при повторном запуске после сбоя. Без идемпотентности это дубли в отчётах.
Приводят красивый процент ускорения без базы: «на 70%» ничего не говорит, если вы не помните, сколько было и сколько стало.