Перевод вашего проекта dbt Databricks в продакшн
Введение
Добро пожаловать в третью часть нашей обширной серии по оптимизации и развертыванию ваших конвейеров данных с использованием Databricks и dbt Cloud. В этом руководстве мы углубимся в доставку этих моделей конечным пользователям, одновременно внедряя лучшие практики, чтобы ваши данные в продакшене оставались надежными и своевременными.
Предварительные требования
Если у вас нет каких-либо из следующих требований, обратитесь к инструкциям в Настройка вашего проекта dbt с Databricks для помощи в их выполнении:
- Вы настроили ваш проект dbt с Databricks.
- Вы оптимизировали ваши модели dbt для максимальной производительности.
- Вы создали два каталога в Databricks: dev и prod.
- Вы создали Databricks Service Principal для выполнения ваших продакшн задач.
- У вас есть как минимум одна среда развертывания в dbt Cloud.
Чтобы начать, давайте вернемся к среде развертывания, созданной для ваших данных в продакшене.
Среды развертывания
В программной инженерии среды играют ключевую роль, позволяя инженерам разрабатывать и тестировать код, не влияя на конечных пользователей их программного обеспечения. Аналогично, вы можете проектировать data lakehouses с отдельными средами. Продакшн среда включает в себя отношения (схемы, таблицы и представления), которые запрашивают или используют конечные пользователи, обычно в BI инструменте или модели ML.
В dbt Cloud среды бывают двух видов:
- Развертывание — Определяет настройки, используемые для выполнения задач, созданных в э той среде.
- Разработка — Определяет настройки, используемые в IDE dbt Cloud для конкретного проекта dbt Cloud.
Каждый проект dbt Cloud может иметь несколько сред развертывания, но только одну среду разработки на пользователя.
Создание и планирование продакшн задачи
С вашей настроенной средой развертывания пришло время создать продакшн задачу для выполнения в вашей prod среде.
Для развертывания наших рабочих процессов трансформации данных мы будем использовать встроенный планировщик задач dbt Cloud. Планировщик задач специально разработан для упрощения развертывания и выполнения вашего проекта dbt, обеспечивая легкость создания, мониторинга и модификации ваших конвейеров данных.
Использование планировщика задач dbt Cloud позволяет командам данных владеть всем рабочим процессом трансформации. Вам не нужно изучать и поддерживать дополнительные инструменты для оркестрации или полагаться на другую команду для планирования кода, написанного вашей командой. Это полное владение упрощает процесс развертывания и ускоряет доставку новых продуктов данных.
Давайте создадим задачу в dbt Cloud, которая будет трансформировать данные в нашем каталоге Databricks prod.
-
Создайте новую задачу, нажав Deploy в заголовке, затем Jobs и Create job.
-
Назовите задачу “Ежедневное обновление”.
-
Установите Environment на вашу production среду.
- Это позволит задаче наследовать каталог, схему, учетные данные и переменные среды, определенные в Настройка вашего проекта dbt с Databricks.
-
В разделе Execution Settings
- Установите флажок Generate docs on run, чтобы настроить задачу на автоматическую генерацию документации проекта каждый раз, когда эта задача выполняется. Это обеспечит актуальность вашей документации по мере добавления и изменения моделей.
- Выберите флажок Run on source freshness, чтобы настроить dbt source freshness как первый шаг этой задачи. Ваши источники должны быть настроены на снимок информации о свежести, чтобы это давало значимые инсайты.
Добавьте следующие три Commands:
dbt source freshness
- Это проверит, не устарели ли какие-либо источники. Мы не хотим пересчитывать модели с данными, которые не изменились с момента нашего последнего запуска.
dbt test --models source:*
- Это проверит качество данных наших исходных данных, например, убедится, что поля ID уникальны и не пусты. Мы не хотим, чтобы плохие данные попадали в продакшн модели.
dbt build --exclude source:* --fail-fast
- dbt build более эффективен, чем выполнение отдельных команд для dbt run и dbt test по отдельности, потому что он сначала выполняет, а затем тестирует каждую модель перед продолжением.
- Мы исключаем исходные данные, потому что уже протестировали их на шаге 2.
- Флаг fail-fast заставит dbt немедленно выйти, если один ресурс не удастся построить. Если другие модели находятся в процессе выполнения, когда первая модель не удается, dbt завершит соединения для этих все еще выполняющихся моделей.
-
В разделе Triggers используйте переключатель, чтобы настроить вашу задачу на выполнение по расписанию. Вы можете ввести конкретные дни и время или создать пользовательский cron-расписание.
- Если вы хотите, чтобы ваша задача dbt Cloud была запланирована другим оркестратором, например, Databricks Workflows, см. раздел Advanced Considerations ниже.
Это всего лишь один пример списка команд "все или ничего", предназначенного для минимизации потерь вычислительных ресурсов. Список команд задач и селекторы предоставляют большую гибкость в том, как будет выполняться ваш DAG. Вы можете захотеть спроектировать свой так, чтобы продолжать выполнение определенных моделей, если другие не удаются. Вы можете захотеть настроить несколько задач для обновления моделей с разной частотой. См. наш Job Creation Best Practices discourse для получения дополнительных предложений по проектированию задач.
После того как ваша задача настроена и успешно выполняется, настройте ваши артефакты проекта, чтобы эта задача информировала ваш сайт документации продакшн и панель данных источников, к которым можно получить доступ из пользовательского интерфейса.
Это будет наша основная продакшн задача для обновления данных, которые будут использоваться конечными пользователями. Еще одна задача, которую все должны включить в свой проект dbt, это задача непрерывной интеграции.
Добавление задачи CI
CI/CD, или Непрерывная Интеграция и Непрерывное Развертывание/Доставка, стала стандартной практикой в разработке программного обеспечения для быстрого предоставления новых функций и исправлений ошибок при поддержании высокого качества и стабильности. dbt Cloud позволяет вам применять эти практики к вашим трансформац иям данных.
Шаги ниже показывают, как создать тест CI для вашего проекта dbt. CD в dbt Cloud не требует дополнительных шагов, так как ваши задачи автоматически подхватят последние изменения из ветки, назначенной среде, в которой выполняется ваша задача. Вы можете выбрать добавление шагов в зависимости от вашей стратегии развертывания. Если вы хотите углубиться в варианты CD, ознакомьтесь с этим блогом о внедрении CI/CD с dbt Cloud.
dbt позволяет вам писать тесты для вашего конвейера данных, которые могут выполняться на каждом этапе процесса, чтобы обеспечить стабильность и правильность ваших трансформаций данных. Основные места, где вы будете использовать ваши тесты dbt:
- Ежедневные запуски: Регулярное выполнение тестов на вашем конвейере данных помогает выявлять проблемы, вызванные плохими исходными данными, обеспечивая качество данных, которые достигают ваших пользователей.
- Разработка: Выполнение тестов во время разработки гарантирует, что изменения в вашем коде не нарушают существующие предположения, позволяя разработчикам быстрее итеративно работать, выявляя проблемы сразу после написания кода.
- Проверки CI: Автоматизированные задачи CI выполняют и тестируют ваш конвейер от начала до конца, когда создается запрос на слияние, обеспечивая уверенность разработчикам, рецензентам кода и конечным пользователям, что предлагаемые изменения надежны и не вызовут сбоев или проблем с качеством данных.
Ваша задача CI будет гарантировать, что модели правильно строятся и проходят любые примененные к ним тесты. Мы рекомендуем создать отдельную тестовую среду и иметь выделенный сервисный принципал. Это обеспечит, что временные схемы, создаваемые во время тестов CI, находятся в своем собственном каталоге и не могут случайно раскрыть данные другим пользователям. Повторите шаги в Настройка вашего проекта dbt с Databricks для создания вашей prod среды, чтобы создать тестовую среду. После настройки у вас должно быть:
- Каталог под названием test
- Сервисный принципал под названием dbt_test_sp
- Новая среда dbt Cloud под названием test, которая по умолчанию использует каталог test и использует токен dbt_test_sp в учетных данных развертывания
Мы рекомендуем настроить задачу CI в dbt Cloud. Это уменьшит время выполнения задачи, выполняя и тестируя только измененные модели, что также снижает затраты на вычисления в lakehouse. Чтобы создать задачу CI, обратитесь к Настройка задач CI для получения подробной информации.
С тестами dbt и SlimCI вы можете быть уверены, что ваши данные в продакшене будут своевременными и точными, даже при высокой скорости доставки.
Мониторинг ваших задач
Внимательное наблюдение за вашими задачами dbt Cloud имеет решающее значение для поддержания надежного и эффективного конвейера данных. Мониторинг производительности задач и быстрое выявление потенциальных проблем позволяют гарантировать, что ваши трансформации данных выполняются гладко. dbt Cloud предоставляет три точки входа для мон иторинга состояния вашего проекта: история запусков, монитор развертывания и статусные плитки.
Панель истории запусков в dbt Cloud предоставляет детальный обзор всех запусков задач вашего проекта, предлагая различные фильтры, чтобы помочь вам сосредоточиться на конкретных аспектах. Это отличный инструмент для разработчиков, которые хотят проверить недавние запуски, подтвердить результаты ночных запусков или отслеживать прогресс выполняющихся задач. Чтобы получить доступ, выберите Run History в меню Deploy.
Монитор развертывания в dbt Cloud предлагает более высокий уровень обзора вашей истории запусков, позволяя вам оценить состояние вашего конвейера данных за длительный период времени. Эта функция включает информацию о продолжительности запусков и уровнях успеха, позволяя вам выявлять тенденции в производительности задач, такие как увеличение времени выполнения или более частые сбои. Монитор развертывания также выделяет задачи в процессе выполнения, в очереди и недавние сбои. Чтобы получить доступ к монитору развертывания, нажмите на логотип dbt в верхн ем левом углу интерфейса dbt Cloud.
Добавляя плитки состояния данных на ваши BI панели, вы можете предоставить заинтересованным сторонам видимость состояния вашего конвейера данных, не покидая их предпочтительный интерфейс. Плитки данных внушают уверенность в ваших данных и помогают предотвратить ненужные запросы или переключение контекста. Чтобы реализовать плитки состояния панели, вам нужно иметь dbt docs с определенными exposures.
Настройка уведомлений
Настройка уведомлений в dbt Cloud позволяет вам получать оповещения по электронной почте или в канале Slack каждый раз, когда запуск заканчивается. Это гарантирует, что соответствующие команды будут уведомлены и смогут быстро принять меры, когда задачи не удаются или отменяются. Чтобы настроить уведомления:
- Перейдите к настройкам вашего проекта dbt Cloud.
- Выберите вкладку Notifications.
- Выберите желаемый тип уведомления (Email или Slack) и настройте соответствующие параметры.
Если вам требуются уведомления другими средствами, кроме электронной почты или Slack, вы можете использовать функцию исходящих вебхуков dbt Cloud для передачи событий задач в другие инструменты. Вебхуки позволяют интегрировать dbt Cloud с широким спектром SaaS приложений, расширяя автоматизацию вашего конвейера в другие системы.