Step 1 of 3

Датасет, содержащий поездки на такси по городу Нью-Йорк, пожалуй, один из самых распространённых примеров анализа данных. Данные открыто лежат на сайте.

Задача пайплайна — скачать сырые данные с сайта, трансформировать их в колоночный формат Parquet и загрузить в S3. Это одна из типичных задач дата инженеров, когда необходимо что-то откуда то выгрузить, сохранить и трансформировать.

В качестве хранилища я буду использовать AWS S3. Это популярный сервис для хранения файлов от компании Amazon, также S3 можно рассматривать как распределенную файловую систему. Чтобы воспользоваться AWS S3 необходимо иметь аккаунт в облаке AWS, также хранение данных на S3 предполагает некоторые расходы. Для тех, кто не хочет платить, я приведу альтернативу, которую можно развернуть у себя на компьютере. Сервис Minio полностью совместимый с S3 файловый сервер, поэтому Apache Airflow будет работать с ним как с AWS S3.

Структура пайплайна

Пайплайн (DAG) будет состоять из следующих операторов:

  • SimpleHttpOperator, его мы будем использовать для проверки существования файла на сервере перед его загрузкой
  • 2 PythonOperator:
    • download_file — загрузка файла с сайта и перекладывание на S3 в сжатом виде (gzip)
    • to_parquet — оператор скачивает файл, загруженный предыдущим оператором, и трансформирует его в формат Parquet, сохраняя результат в S3.

Вот как выглядит это на диаграмме с зависимостями:

Безусловно выполнение последующего шага зависит от успешности предыдущего. Если необходимого файла на сервере нет (check_file), то выполнение загрузки нецелесообразно (download_file), за этим строго следит Airflow.

Comments