dbt

Средний уровень

Почему мой первый запрос dbt или Spark за день выполняется целую вечность?

Auto-suspend — это реальный контроль затрат, а не баг, но это значит, что первый запрос после простоя платит за то, чтобы что-то разбудить, а сколько именно — целиком зависит от того, что реально уснуло.

Читать на:
Resume склада Keep-warm запрос Холодный EMR/Databricks
Примерно как сравнивается время холодного старта по слоям, в секундах — не измеренный бенчмарк.

«Медленный первый запрос» означает совершенно разное в зависимости от того, просыпается ли приостановленный склад Snowflake или терминированный кластер EMR выделяет новые узлы с нуля.

Чем на самом деле жертвует auto-suspend

Склады Snowflake/BigQuery и кластеры EMR/Databricks, настроенные на терминацию при простое, приостанавливаются именно для того, чтобы не платить за вычисления, которые никто не запрашивает — это осознанный, реальный контроль затрат, а не недосмотр. Плата за это — следующий запрос после простоя платит за возврат этих вычислений, а не выполняется на уже тёплом ресурсе.

Насколько на самом деле велик холодный старт

Возобновление приостановленного склада Snowflake или BigQuery — обычно однозначные секунды. Терминированный кластер EMR или Databricks — совершенно другой порядок величины: минуты на выделение новых узлов с нуля. «Первый запрос за день медленный» означает очень разное в зависимости от того, какой именно слой реально остыл, и решение для одного ничего не даёт для другого.

Два реальных решения и их настоящая цена

Запланированный keep-warm запрос — тривиальный SELECT 1 по cron прямо перед первой реальной нагрузкой — меняет небольшую, предсказуемую стоимость вычислений на устранение холодного старта; это имеет смысл, только если эта стоимость реально меньше того, что экономил auto-suspend. Альтернатива — удлинение таймаута auto-suspend — платит большую стоимость простоя повсеместно вместо небольшой целевой.

# держит склад тёплым прямо перед началом реальной нагрузки 0 55 7 * * 1-5 SELECT 1; -- cron: будни в 7:55, за 5 мин до первого запуска dbt

Посмотрите, как это выглядит на вашем собственном пайплайне.

Загрузите реальный event log Spark, run_results.json от dbt или экспорт метрик Flink — и получите конкретные рекомендации, которые нужно одобрить, а не ещё одно эмпирическое правило.