Склонировал репозиторий Prerequisites
git clone https://github.com/ssau-data-engineering/Prerequisites.git
Выполнил необходимые пункты из Порядка запуска.
Поднял Airflow и EK
docker compose -f docker-compose.airflow.yaml up --build -d
docker compose -f docker-compose.elasticsearch.yaml up --build -d
На этом этапе также столкнулся с проблемой входа в веб-интерфейс Airflow (не уидел креды в репозитории Prerequisites), пришлось создавать своего юзера.
Описал граф для Airflow
Поместил файл с описанием графа в контейнер с Airflow (через маунт директорию)
В интерфейсе Airflow выполнил граф (25 раз). Столкнулся на этом этапе с различными проблемами из-за проблем с пониманием документации. Несколько раз переписывал код с нуля (после постепенного ознакомления с Airflow понимал как можно лучше написать), что также ломало пайплайн.
Задачу save_to_elastic писал после освоения документации по EK и построения нескольких тестовых дэшбордов.
В Kibana создавал index pattern, загружал данные, после чего рисовал дэшборд.
На графике изображена зависимость средней оценки вина от цены.
Позже решил для больше наглядности сделал график зависимости средней цены от поставленной оценки.
В веб-интерфейсе нарисовал граф
При тестировании столкнулся с тем, что GetFile постоянно считывала файлы из исходной директории, из-за чего забивалась очередь и все зависало (из-за установки в GetGile флага keepSourceFiles)
Полученный график в kibana полностью соответсвует графику полученному после выполнения airflow пайплайна
Nifi предоставляет удобный визуальный интерфейс построения графа. Как типичное no-code (low-code) решение имеет свои ограничения. Если выходить за рамки простых вещей, требуется более глубокое изучение. Airflow хоть и требует написания кода, но для реализации кастомной логики не требует сторонних вещей: все решается написанием кода на Python.