Синергия Apache Airflow и Great Expectations для высокого качества больших данных

Автор Категория ,
Синергия Apache Airflow и Great Expectations для высокого качества больших данных

Сегодня рассмотрим, что такое Great Expectations, чем этот инструмент полезен для специалистов по Data Science и дата-инженеров, а также как связать его с Apache Airflow, какую пользу это принесет в задачах обеспечении качества данных. Также разберем кейс совместного использования Apache Airflow и Great Expectations в компании Vimeo и заглянем под капот готового пакета в реестре провайдеров от Astronomer.

Большие надежды: что такое Great Expectations

Great Expectations – это библиотека проверки, документирования и профилирования данных для поддержки их качества (Data Quality) и улучшения взаимодействия между командами дата-специалистов. Это реализуется через декларативные утверждения о данных в форме простых, удобочитаемых методов Python, которые затем используются для проверки, возвращая результат успеха или неудачи. Можно использовать как готовые утверждения, так и писать собственные, чтобы автоматизировать и ускорить следующие процессы работы с данными:

  • автоматическое профилирование, включая получения базовой статистики и генерация набора утверждений для конкретного датасета;
  • валидация – проверка автоматически сгенерированных и пользовательских утверждений о качестве данных;
  • документирование в виде наглядных отчетов о качестве данных – HTML-документов с пакетами утверждений о данных и результатами их проверки;

Great Expectations работает с различными источниками данных: датафреймы Pandas, Spark и базы данных SQL через SQLAlchemy. Также можно использовать библиотеку для файлов CSV или любого фрагмента данных, который загружается в датафрейм. Great Expectations легко настраивается и позволяет сохранить все метаданные, наборы утверждений и результаты проверки, в файловых системах, СУБД, а также в облачных хранилищах типа AWS S3 и Google Cloud Storage.

Важно понимать, что, в отличие от Apache AirFlow, Prefect, Dagster, dbt и прочих конвейерных фреймворков, Great Expectations не выполняет конвейеры обработки данных, а интегрируется с ними, позволяя запустить валидацию качества как шаг такого конвейера. Также библиотека не является инструментом управления версиями данных и средством их хранения. Great Expectations работает с метаданными датасета: утверждениями, результатами проверки и пр.

Будучи основанными на Python, инструмент лучше всего работает именно с этим языком программирования. Его также можно вызвать из командной строки, не используя среду разработки Python. Для других сред рекомендуется использовать альтернативные решения. В частности, для среды R подойдет assertR, а для экосистемы TensorFlow – TFDV [1].

Впрочем, именно Python чаще всего применяется для решения задач Data Science и инженерии данных. Например, именно этот язык используется в Apache Airflow – популярном инструменте управления рабочими процессами планирования, генерации и отслеживания пакетных задач обработки данных. Если рассматривать обеспечение качества данных с помощью Great Expectations как один из шагов такого пакетного конвейера, целесообразно объединить возможности этой Python-библиотеки с мощью Apache Airflow. Какую пользу это принесет для практического управления жизненным циклом качества данных, мы рассмотрим далее.

Управление жизненным циклом качества данных с Apache AirFlow и Great Expectations: кейс Vimeo

Использование Great Expectations в качестве инструмента обеспечения качества данных вместе с Airflow даст следующие преимущества [2]:

  • автоматизация создания документации по тестированию – все тесты могут быть скомпилированы в чистую, удобочитаемую, постоянно актуализируемую документацию;
  • автоматическое профилирование – можно быстро создать отправную точку для набора ожиданий по датасету из существующего ресурса данных;
  • вариативность развертывания – можно развернуть проверки качества данных как код внутри задач, отдельные задачи DAG или как самостоятельный DAG AirFlow.

Чтобы показать на практическом примере, чем это полезно для дата-инженеров, рассмотрим кейс компании Vimeo – ведущего провайдера потокового видео высокой четкости, о котором мы уже рассказывали здесь. Vimeo предлагает HD-видеохостинг для создателей видео, включая рекламные видеоролики. Разнопрофильные команды инженеров и аналитиков работают вместе с целью интеграции потоковых данных с разных рекламных платформ для точной аналитики. Чтобы эффективно обрабатывать огромные объемы данных из различных источников, Vimeo использует Great Expectations и Apache AirFlow для решения проблем с качеством данных. В частности, одна из них связана с обнаружением проблем, вызванных прерываниями обслуживания или изменениями схемы восходящего потока. Обычно такие типы событий могут привести к некорректному выполнению этапов конвейера обработки данных: последующие таблицы будут содержать отсутствующие или устаревшие записи. Без постоянного мониторинга такая проблема потенциально может оставаться незамеченной в течение нескольких дней, пока не приведет к искажению метрик в бизнес-отчетах.

Дополнительные проблемы в Vimeo возникли при миграции конвейера из сотен DAG AirFlow с одновременным обеспечением актуальности и согласованности данных. Конвейеры данных, которыми управляет команда инженеров бизнес-аналитики, используют данные с рекламных платформ, таких как Google и Facebook, через Apache Kafka. Данные извлекаются и преобразуются в Google Cloud с помощью Airflow DAG и Python и загружаются в хранилище данных Snowflake с шагом 15 минут. Great Expectations развертывается как часть Airflow DAG в Google Cloud и используются там для мониторинга конвейеров данных, поступающих в хранилище. Если из-за какой-либо проблемы DAG не может использовать новые данные дольше 24 часов, Great Expectations уведомляет команду дата-инженеров по электронной почте или в Slack. Так можно быстро связаться с внешней командой по поводу проблемы, а также предупредить участников конвейера о любых задержках [3].

Как совместить Apache AirFlow и Great Expectations: готовый пакет из реестра провайдеров

С технической точки зрения интеграция Great Expectations с Airflow не вызывает никаких сложностей. Можно воспользоваться готовым оператором Great Expectations, который позволяет применять эту Python-библиотеку в DAG AirFlow, скачав его из открытого реестра провайдеров от Astronomer. Об этом мы подробно писали здесь.

Установить пакет провайдера Great Expectations в среду Airflow позволит соответствующая команда для менеджера пакетов pip: pip install airflow-provider-great-expectations.

Далее можно импортировать этот модуль в файл DAG и создать его экземпляр с желаемыми параметрами:

from great_expectations_provider.operators.great_expectations import GreatExpectationsOperator

Из опциональных параметров возможны следующие:

  • run_name [str] – определяет запуск проверки (по умолчанию используется временная метка, если не указано иное);
  • data_context_root_dir [str] – путь к каталогу great_expectations;
  • data_context [BaseDataContext] – объект DataContext great_expectations;
  • expectation_suite_name [str] – имя пакета набора утверждений для проверки;
  • batch_kwargs [dict] – Batch_kwargs, используемый для проверки;
  • assets_to_validate [list[dict]] – список словарей batch_kwargs + набор утверждений для проверки;
  • checkpoint_name [str] – имя контрольной точки для проверки;
  • validation_operator_name Необязательно [str]- имя оператора проверки Great Expectations, по умолчанию action_list_operator;
  • fail_task_on_validation_failure [bool] – сбросить задачу Airflow, если проверка Great Expectations не удалась.

Параметром обратного вызова является один: validation_failure_callbackCallable [[CheckpointResult], None], который вызывается, когда проверка Great Expectations не проходит.

Посмотреть примеры практического использования этого готового пакета можно прямо на его странице в реестре открытого реестра провайдеров от Astronomer [4].

 

Больше деталей про администрирование и эксплуатацию Apache AirFlow для задач подготовки данных и организации ETL/ELT-процессов в аналитике больших данных вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://docs.greatexpectations.io/docs/
  2. https://www.astronomer.io/blog/adding-data-quality-to-dags-ft-great-expectations
  3. https://greatexpectations.io/case-studies/vimeo-case-study/
  4. https://registry.astronomer.io/providers/great-expectations/modules/greatexpectationsoperator/