3 процессора для маршрутизации FlowFile в Apache NiFi

NiFI процессоры атрибуты, NiFI примеры курсы обучение, NiFI для инженера данных, потоковая обработка с NiFI, Школа Больших Данных Учебный Центр Коммерсант

Чем процессор RouteOnContent отличается от RouteOnAttribute и RouteText: преимущества и недостатки каждого из них для маршрутизации FlowFile в Apache NiFi, варианты использования каждого из них с примерами.

Маршрутизация на основе контента

Как мы уже отмечали в прошлой статье, маршрутизация FlowFile в в Apache NiFi может быть на основе контента, т.е. содержимого, или атрибутов. Атрибуты представляют собой пары ключ-значение, которые связаны с пользовательскими данными. Каждый FlowFile имеет несколько атрибутами, которые меняются в течение его жизненного цикла, позволяя маршрутизировать FlowFile по конвейеру обработки данных.

Маршрутизация на основе контента в Apache NiFi реализуется с помощью процессора RouteOnContent, который позволяют применять регулярные выражения или другие проверки для принятия решений о направлении FlowFile в отношение. Например, фильтрация логов в зависимости от уровня логирования (ERROR, WARN, INFO), обработка данных разных форматов, когда JSON, XML, CSV файлы будут обрабатываться по-разному в зависимости от их содержания.

Процессор RouteOnContent применяет регулярные выражения к содержимому FlowFile и направляет копию FlowFile в каждое место назначения, регулярное выражение которого совпадает. Регулярные выражения добавляются как определяемые пользователем свойства, где имя свойства — это имя отношения, а значение — регулярное выражение для сопоставления с содержимым FlowFile. Определяемые пользователем свойства поддерживают язык выражений атрибутов, но результаты интерпретируются как буквальные значения, а не как регулярные выражения. Таким образом, этот способ маршрутизации FlowFile полезен, когда нужно направить данные на основе конкретной информации, которая содержится в теле сообщения. К примеру, JSON-документ надо направлять его в разные потоки в зависимости от значения определенного поля.

Маршрутизация на основе контента достаточно гибкая, поскольку позволяет принимать решения на основе фактических данных, в т.ч. когда атрибутов недостаточно или важны детали в содержимом FlowFile. Однако, производительность процессора RouteOnContent ниже по сравнению с RouteOnAttribute, поскольку анализ содержимого более ресурсоемкий, чем работа с метаданными, особенно для больших файлов. Кроме того, регулярные выражения и другие методы анализа содержимого обычно сложнее обработки атрибутов.

Маршрутизация на основе атрибутов

Процессор RouteOnAttribute маршрутизирует FlowFile на основе их атрибутов с использованием языка выражений NiFi. Дата-инженер добавляет свойства с допустимыми выражениями языка выражений NiFi в качестве значений. Каждое выражение должно возвращать значение типа Boolean (true или false). Подробнее о процессоре RouteOnAttribute мы писали в прошлой статье.

Например, FlowFile может быть направлен по разным путям в зависимости от источника или типа данных, указанных в атрибутах. Это подходит, когда подходит, когда решения о маршрутизации зависят от метаданных, а не от содержимого самих данных. Например, FlowFile, загруженные из интернета, должны направляться на обработку по одному маршруту, а из базы данных – по другому. Для этого надо проанализировать значение атрибута source у FlowFile, которое может быть «web» или «database», и маршрутизировать поток данных на основе этих метаданных.

Главным достоинством маршрутизации на основе атрибутов является высокая производительность, поскольку анализ метаданных обычно выполняется быстрее и менее ресурсоемко, чем содержимого. Кроме того, с процессором RouteOnAttribute в NiFi довольно просто работать, поскольку атрибуты просто изменять и поддерживать.

Однако, если атрибуты неверно указаны или не содержат всех необходимых данных для точной маршрутизации, FlowFile может быть ошибочно направлен не в то отношение.

Процессор RouteText в NiFi

В Apaache NiFi есть еще процессор RouteText, который маршрутизирует текстовые данные на основе набора правил, определенных пользователем. Каждая строка входящего FlowFile сравнивается со значениями, указанными в свойствах, определенных пользователем. Механизм, с помощью которого текст сравнивается с этими свойствами, определяется стратегией сопоставления. Затем данные маршрутизируются в соответствии с этими правилами, маршрутизируя каждую строку текста по отдельности.

Процессор RouteText маршрутизирует текстовый контент на основе заданных условий. Он полезен для анализа строк текстовых данных, особенно когда надо выполнять сложные проверки с использованием регулярных выражений или других текстовых паттернов. Это подходит, когда нужно анализировать текстовые данные построчно и принимать решения на основе этого анализа. Например, есть CSV-файлы, и надо маршрутизировать строки на основе значений в определенных столбцах, направляя строки, содержащие определенные ключевые слова или фразы, в разные отношения.

Таким образом, процессор RouteText позволяет гибко настраивать правила маршрутизации с использованием регулярных выражений, чтобы обрабатывать широкий спектр текстовых данных. Он довольно просто настраивается и способен обрабатывать большие объемы данных, обеспечивая высокую производительность при маршрутизации. Процессор RouteText немного похож на RouteOnContent, поскольку они оба маршрутизацизируют FlowFile на основе содержимого. Однако, RouteText работает с текстовыми данными, динамически меняя маршрутизацию данных каждой строки, а RouteOnContent может работать с различными типами содержимого. Поэтому RouteText позволяет задавать условия маршрутизации с использованием регулярных выражений, применяемых только к текстовым данным. Процессор RouteOnContent также использует регулярные выражения, но имеет более широкие возможности для определения условий на основе содержимого, поскольку может работать не только с текстовыми данными.

Эффективность и точность работы процессора RouteText сильно зависят от правильно составленных регулярных выражений. А при сложных регулярных выражениях или больших объемах данных может возникнуть нагрузка на ресурсы и снизиться производительность.

Таким образом, у каждого из трех рассмотренных процессоров маршрутизации FlowFile в Apache NiFi есть свой сценарий использования. Покажем их различия в таблице.

Процессор Вариант использования Преимущества Недостатки Вариант использования
RouteOnContent Маршрутизация на основе содержимого FlowFile Маршрутизация данных любого формата, в т.ч. когда атрибутов недостаточно Низкая производительность при обработке файлов большого размера Когда нужно точно и гибко настроить маршрутизацию данных любого формата
RouteOnAttribute Маршрутизация на основе атрибутов (метаданных) FlowFile Высокая производительность Если атрибуты неверно указаны или не содержат всех необходимых данных для точной маршрутизации, FlowFile может быть ошибочно направлен не в то отношение Когда маршрут обработки определяется метаданными
RouteText Маршрутизация на основе построчного анализа текстовых данных FlowFile Очень гибкая динамическая маршрутизация текстовых данных для каждой строки Только файлы текстовых форматов (TXT, CSV, JSON, XML и пр.).

Низкая производительность при обработке больших файлов

Когда данные текстовые и каждую строку нужно по-разному обрабатывать

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

Источники

  1. https://nifi.apache.org/documentation/v2/
Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.
Поиск по сайту