Создание вашего первого конвейера данных (1)

базовое пошаговое руководство о том, как построить свой первый конвейер и инструменты, которые вы будете использовать

Введение:

Современные конвейеры данных позволяют вашему бизнесу быстро и эффективно разблокировать данные внутри вашей организации. Они позволяют извлекать информацию из ее источника, преобразовывать ее в пригодную для использования форму и загружать в свои системы, где вы можете использовать ее для принятия обоснованных решений. Делайте это хорошо, и вы получите выгоду от более быстрых инноваций, более высокого качества (с повышенной надежностью), снижения затрат и счастливых людей. Сделав это неправильно, вы можете потерять много денег, упустить важную информацию или получить совершенно неверную информацию.

Контекст проекта:

Департамент городского транспорта хочет собирать данные о дорожном движении с помощью беспилотных летательных аппаратов (дронов) из нескольких мест в городе и использовать собранные данные для улучшения транспортного потока в городе и для нескольких других нераскрытых проектов. Я создам масштабируемое хранилище данных для размещения данных о траектории транспортных средств, извлеченных путем анализа кадров, снятых роевыми дронами и стационарными придорожными камерами.

И я рассмотрю следующее:

  • Склад должен быть в состоянии удовлетворить будущие потребности.
  • Данные должны быть хорошо организованы, чтобы несколько последующих проектов могли эффективно запрашивать данные.
  • Я буду использовать структуру Extract Load Transform (ELT) с использованием DBT. Потому что это помогает инженерам-аналитикам в отделе городского транспорта настраивать рабочие процессы трансформации по мере необходимости.

Методологии:

  • ELT: оно означает извлечение, загрузку и преобразование и описывает последовательность перемещения данных в наше хранилище и выполнения некоторых преобразований, чтобы сделать их готовыми к использованию группами специалистов по анализу и анализу данных.
  • Dbt (инструмент построения данных):выполняет T в процессах ELT (извлечение, загрузка, преобразование) и обрабатывает преобразование этих операторов выбора в таблицы и представления.
  • Оркестрация. Оркестрация данных — это процесс извлечения разрозненных данных из нескольких мест хранения данных, их объединения и организации, а также предоставления доступа к инструментам анализа данных. Оркестрация данных позволяет компаниям автоматизировать и оптимизировать процесс принятия решений на основе данных.
  • PostgreSQL: – это продвинутая реляционная база данных корпоративного класса с открытым исходным кодом, которая поддерживает запросы SQL (реляционные) и JSON (нереляционные). Это очень стабильная система управления базами данных,
  • Docker: это программная платформа, позволяющая быстро создавать, тестировать и развертывать приложения. Docker упаковывает программное обеспечение в стандартизированные блоки, называемые контейнерами, которые содержат все необходимое для работы программного обеспечения, включая библиотеки, системные инструменты, код и среду выполнения. Используя Docker, вы можете быстро развертывать и масштабировать приложения в любой среде и знать, что ваш код будет работать.
  • Airflow: Apache Airflow — это платформа управления рабочими процессами с открытым исходным кодом для конвейеров обработки данных.
  • Snowflake: полностью управляемая SaaS-программа (программное обеспечение как услуга), которая предоставляет единую платформу для хранения данных, озер данных, инженерии данных, науки о данных, разработки приложений для работы с данными, а также безопасного совместного использования и использования данных в режиме реального времени. / общие данные.
  • Группы DAG. В Airflow конвейеры данных определяются в коде Python как направленные ациклические графы, также известные как DAG. В графе каждый узел представляет задачу, выполняющую единицу работы, а каждое ребро представляет собой зависимость между задачами.
  • Redash: это веб-приложение с открытым исходным кодом. Используется для очистки баз данных и визуализации результатов

Данные:

В разделе Загрузки — pNEUMA | open-traffic (epfl.ch) вы можете найти данные pNEUMA: pNEUMA — это открытый крупномасштабный набор данных о естественных траекториях полумиллиона транспортных средств, которые были собраны в ходе единственного в своем роде эксперимента группой дроны в перегруженном центре Афин, Греция. Каждый файл для одного (область, дата, время) составляет ~ 87 МБ данных.

Вы можете обратиться к следующим ссылкам, чтобы понять, как данные генерируются из видеокадров, записанных роевыми дронами.

Вы можете использовать следующие пакеты GitHub для визуализации данных и взаимодействия с ними (и получения других подобных данных).

Воздушный поток:

После загрузки данных мы должны настроить воздушный поток для автоматизации нашего конвейера. Мы использовали Docker compose для запуска файла образа Airflow. Я не буду рассказывать вам о процедурах установки, но вы можете прочитать эту Статью для получения более подробной информации.

Во-вторых, мы напишем наши DAG для выполнения двух конкретных задач:

1-построить нашу таблицу базы данных в postgresql.

2- Загрузите данные из источника в нашу базу данных postgresql.

Поэтому мы будем использовать операторы воздушного потока, которые просто являются строительными блоками DAG Airflow. Они содержат логику обработки данных в конвейере. Каждая задача в DAG определяется созданием экземпляра оператора. Мы будем использовать операторы Python, Postgres и Bash.

Код DAG будет таким:

После запуска airflow наши DAG должны появиться на панели инструментов Airflow с более подробной информацией.

Dbt (инструмент для создания данных):

На этапе преобразования мы также инициируем dbt с помощью докера. Мы напишем код для преобразования наших данных следующим образом:

Препятствия с рекомендациями:

Возможности устройства были барьером номер один, для эффективной работы Docker требовалось не менее 4 ГБ оперативной памяти, а окна были почти невозможны для моего устройства. Так что в будущем одним из решений будет переход на построение конвейеров данных с помощью Airflow.

Конфигурация портов, все Airflow, dbt и Redash сталкиваются с проблемами после конфигурации.

Предварительная настройка оптимальных портов сэкономит время и силы при построении конвейеров.

Использованная литература: