Аналитика больших данных с Apache Airflow без дата-инженера: Viewflow от DataCamp

Автор Категория , ,
Аналитика больших данных с Apache Airflow без дата-инженера: Viewflow от DataCamp

В этой статье поговорим про Viewflow: что такое, как устроено, чем полезно аналитикам данных и Data Scientist’ам. Встречайте новый фреймворк на базе Apache AirFlow от DataCamp – американского edu-стартапа в области ИИ, который упрощает создание и управление материализованными представлениями на SQL, R и Python в концепции low code, т.е. практически без разработки кода.

Airflow в DataCamp для управления материализованными представлениями

DataCamp – одна из самых популярных платформ онлайн-образования со множеством курсов и тренингов по анализу данных и машинному обучению. Как и у большинства современных веб-компаний, бизнес DataCamp основан на огромном количестве данных: информация о поведении пользователей на сайте, потребление контента, конверсии и т.д. Для принятия управленческих решений на основе данных (data-driven менеджмент) аналитики и Data Scientist’ы компании создают собственные материализованные представления – результаты серии преобразований данных, таких как агрегирование, объединение или реализация бизнес-правил на SQL, R или Python [1].

Напомним, в теории СУБД материализованное представление – это физический объект базы данных с результатами выполнения SQL-запроса. Материализованные представления позволяют намного ускорить выполнение запросов к миллионам записей, позволяя за доли секунд выполнять аналитику терабайтов данных. Такая скорость достигается за счет использования заранее вычисленных итоговых данных и результатов соединений таблиц. Предварительно вычисленные итоговые данные обычно намного меньше исходных. Целостность данных в материализованных представлениях поддерживается с помощью периодических синхронизаций или триггеров [2].

В DataCamp для планирования выполнения SQL-запросов, а также сценариев R и Python, которые создают материализованные представления, применяется Apache Airflow. В этом фреймворке представления создается задачами, которые организуются в разных DAG-цепочки для различных бизнес-областей, таких как маркетинг, финансы, контент и пр. Это позволяет иметь четкие и читаемые DAG’и, где легко найти задачу, к примеру, для отладки или для запуска вручную после изменения кода. Всего в DataCamp около 20 DAG’ов, которые создают более 500 представлений в КХД на Redshift.

В DataCamp материализованные представления создаются на основе сырых (необработанных) данных и часто зависят друг от друга, перекрестно используя результаты вычислений. Многие представления имеют внутренние и внешние зависимости. Внутренняя зависимость – это восходящее представление в том же DAG, а внешняя – представление из другого DAG. Про проблемы управления взаимозависимыми DAG’ами в Apache AirFlow и способы их решения мы писали здесь.

Итак, в DataCamp процессы обработки данных в компании планируются в рамках самого популярного в Big Data инженерии фреймворка Apache Airflow. Но разработка кода в Airflow требует инженерных навыков работы с этой системой и может быть затруднительна для аналитиков данных и аналитики и Data Scientist’ов. Более того, с ростом данных и их материализованных представлений в workflow-цепочки их обработки, увеличивается количество кода в Airflow, а также повышается стоимость его поддержки и сопровождения.

Чтобы избавить своих аналитиков и Data Scientist’ов от разработки кода в AirFlow и других аспектов дата-инженерии, позволив им сосредоточиться на непосредственной аналитике больших данных, DataCamp разработали Viewflow. Viewflow – это платформа, которая автоматически преобразует серию файлов SQL, R markdown и Python в ориентированный ациклический граф (DAG) задач Airflow. DAG реализует логическую модель данных Airflow, а задача – отдельное материализованное представление.

После создания или обновления представлений они используются для разработки информационных панелей (дэшбордов) и становятся доступны каждому сотруднику DataCamp, которые могут запрашивать их в SQL, R или Python. Простота подключения пользователей к корпоративному хранилищу данных (КХД) на R или Python реализуется с помощью пакетов datacampr и datacampy. Эти пакеты обрабатывают аутентификацию в КХД и предоставляют пользователям служебные методы для запроса и управления данными, которые считаются источником истины для каждого бизнес-решения. Viewflow облегчает разработку новых и управление существующими задачами благодаря автоматическому управлению зависимостями между ними [1]. Как это реализуется на практике, мы рассмотрим далее.

Как работает Viewflow и что получит Data Scientist

Сперва рассмотрим традиционный процесс создания материализованных представлений в Apache AirFlow без Viewflow. Он будет включатель следующие шаги [1]:

  • создание представления через написание SQL-запроса или скрипт на R/Python;
  • обновление Python-скрипта DAG для новой задачи с помощью методов API и подходящих операторов Airflow;
  • разработка Python-кода для определения внутренних и внешних зависимостей задачи с применением Airflow API.

Примечательно, что только первый шаг создает ценность для конечного результата, чтобы получить из данных ценные для бизнеса инсайты. А остальные шаги – лишь инструменты, необходимые для материализации новой точки зрения. Но именно они могут быть источниками проблем по следующим причинам:

  • необходимость специальных знаний и навыков работы в Airflow;
  • переключение контекста между анализом (Data Science) и инженерией (Data Engineering) может привести к ошибкам реализации логики обработки данных в программном коде;
  • некоторые логические ошибки, полученные на предыдущем этапе, сложно обнаружить и исправить, если они не привели к явным исключениям и номинально прошли все тесты. Например, если представление C в реальности зависит от представлений A и B, но эта зависимость не была установлена вручную, то с обновлением А представление C может перестать работать корректно: будет содержать устаревшие данные из-за ошибки в установке логических зависимостей. Разумеется, это недопустимо в data-driven управлении, когда последствия такой логической ошибки могут быть весьма ощутимы для бизнеса.

С использованием Viewflow, создание нового представления упрощается до одного шага: достаточно только написать SQL-запрос, R или Python-скрипт, по желанию сопроводив его дополнительными метаданными (описание представления, столбцов и пр). Viewflow сам автоматически создаст и добавит новую задачу в DAG, а также установит ее внутренние и внешние зависимости.

Таким образом, Viewflow облегчает процессы аналитики больших данных, позволяя Data Scientist’ам сосредоточиться на работе с данными, не погружаясь в тонкости инженерии. Это увеличивает скорость принятия data-driven решений, позволяя быстро добавлять новые представления и оперативно реагировать на запросы. Наконец, этот фреймворк, под капотом которого старый добрый Apache AirFlow, существенно снижает барьер входа в работу с Big Data. Аналитик с базовыми знаниями SQL или продакт-менеджер, знакомым с R/Python, теперь могут достаточно легко создавать собственные представления, не написав ни единой строчки кода Airflow.

Оценив пользу от Viewflow на практике, компания DataCamp решила поделиться им с сообществом разработчиков и инженеров Big Data решений, выложив этот open-source проект в открытый доступ в марте 2021 года. Его можно свободно скачать с GitHub, проверить и, при желании, отправить запрос на новую функцию или сообщить о найденной ошибке [3]. В будущем разработчики планируют дальше развивать Viewflow, добавляя новые функции и типы представлений, в частности, Rmd и Jupyter Notebook. Еще об одной альтернативе Apache AirFlow, ML- и ETL-оркестраторе Dagster, читайте в нашей новой статье

Узнайте больше про использование Apache AirFlow для разработки сложных конвейеров аналитики больших данных с Hadoop и Spark на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://blog.datacamp.engineering/viewflow-fe07353fa068?gi=17738219e1be
  2. https://ru.wikipedia.org/wiki/Материализованное_представление
  3. https://github.com/datacamp/viewflow