Ответ вслух Middle ETL, ELT и Airflow спрашивают часто обновлено

Идемпотентность и бэкфилл

Вопрос

Объясните, что такое идемпотентный пайплайн и почему без идемпотентности невозможен нормальный бэкфилл.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Идемпотентный пайплайн при повторном запуске за тот же период даёт тот же результат. Для этого задача берёт свой интервал из контекста запуска, а не считает вчера от текущего времени, и не дописывает данные, а перезаписывает партицию за интервал или делает upsert по ключу.

Что должно прозвучать в ответе

  • Повтор за тот же период даёт тот же результат

  • Период из контекста запуска, а не от текущего времени

  • Перезапись партиции или upsert вместо дописывания

  • Атомарная подмена результата

  • Бэкфилл: тот же код за прошлые периоды

  • Без идемпотентности ретраи и бэкфилл дают дубли и пропуски

Что могут спросить следом

  • Как сделать идемпотентной загрузку в Kafka?
  • Что делать, если источник за прошлый период уже изменился?

Разбор

Образцовый ответ: «Идемпотентный пайплайн при повторном запуске за тот же период даёт тот же результат. Для этого задача берёт свой интервал из контекста запуска, а не считает вчера от текущего времени, и не дописывает данные, а перезаписывает партицию за интервал или делает upsert по ключу. Результат готовится во временном месте и атомарно подменяется, чтобы потребители не видели половину. Тогда ретрай после сбоя безопасен, а бэкфилл это просто запуск того же кода за прошлые интервалы: исправили ошибку в логике, перезапустили за прошлый месяц, получили правильные данные без дублей. Если задача неидемпотентна, каждый ретрай добавляет дубли, а бэкфилл приходится делать руками. Отдельная тонкость: источник может уже не содержать прошлых данных, поэтому сырой слой хранит копию».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.