Является ли Apache NiFi подходящим инструментом для этого случая использования? - PullRequest
0 голосов
/ 19 февраля 2020

Пожалуйста, помогите мне выбрать правильный инструмент. У меня есть следующая задача: есть N источников данных (N <20), это может быть либо реляционная БД (MySQL, PostgreSQL), либо REST API. Мне нужно загрузить все данные из N источников данных в одну реляционную базу данных (только один раз). Таким образом, конечной целью является простой ETL: </p>

  • извлечение данных из источника данных
  • преобразование данных (сопоставление данных в соответствии с целевой схемой БД)
  • загрузка в БД

(Примечание: каждая исходная БД содержит 10-15 связанных таблиц с 100 000 - 1 000 000 строк)

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

Пара вопросов:

  • Выглядит ли Apache NiFi подходящим для моей задачи или это было бы излишним?
  • Будет ли у меня какая-либо польза от настройки Apache NiFi с нулевым знанием этого инструмента по сравнению с написанием Пользовательский скрипт, использующий какой-то язык программирования, с которым мне удобно (Python, например)

Спасибо!

1 Ответ

2 голосов
/ 19 февраля 2020

Apache NiFi может быть правильным ответом для этого случая, но может привести к деталям.

Ваш случай наличия множества различных источников данных - это общий шаблон развертывания для NiFi, где пользователи будут выполнять несколько многоуровневый подход:

  1. перенос данных из соответствующих источников,
  2. аннотирование / извлечение ключевых атрибутов / свойств фрагмента данных
  3. преобразование данных в каноническое представление,
  4. маршрутизация к соответствующим нижестоящим потребителям,
  5. прохождение его через процессор для сохранения в целевом хранилище / системе / службе

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

Учитывая упоминание «простого» ETL и тот факт, что вы используете другие источники помимо баз данных, это, кажется, вписывается в сферу предполагаемого использования NiFi. NiFi не подходит для некоторых из более сложных операций ETL и не имеет пользовательского интерфейса, созданного для этих типов операций.

...