Есть ли способ выполнить математические операции для некоторых значений в файлах с apache nifi?

Я получаю некоторые числовые данные с помощью API из URL-адреса, и я ищу способ выполнить некоторые математические операции в apache nifi перед помещением данных в каталог файлов. Спасибо уже сейчас.

Между прочим, я использую процессор InvokeHTTP для получения данных и размещения файла где-нибудь, я использую процессор PutFile. Я просмотрел несколько связанных веб-сайтов, но не смог найти рабочий способ.


person cagridemir    schedule 09.07.2019    source источник
comment
вы можете использовать ExecuteScript, ExecuteGroovyScript для сценариев groovy и python (jython), или вы можете вызвать любую внешнюю командную строку с помощью ExecuteStreamCommand и передать весь файл как STDIN   -  person daggett    schedule 09.07.2019
comment
Я собираюсь попробовать сейчас, большое вам спасибо.   -  person cagridemir    schedule 09.07.2019


Ответы (3)


Попробуйте использовать процессор QueryRecord и Определите службы контроллера Record Reader/Writer для чтения / записи потокового файла.

  • Добавьте новое свойство в процессор QueryRecord с помощью SQL-запроса Apache calcite с вашими математическими операциями над потоковым файлом.

  • Результаты SQL-запроса будут добавлены в outgoing flowfile в желаемом формате.

person Shu    schedule 09.07.2019
comment
@jrcharlie, помог ответ? Если да, примите ответ, чтобы закрыть тему :) meta.stackexchange.com/questions/5234/ - person Shu; 29.07.2019

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

В документации Apache [2] есть раздел математических операций [1]. Операции варьируются от простого операнда, такого как плюс / минус, до раскрытия статических методов java.lang.Math.

[1] https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html#numbers [2] https://nifi.apache.org/docs.html

person JDP10101    schedule 09.07.2019

Вы можете попробовать ExecuteStreamCommand, если хотите получить весь файл, а затем выполнить операции. В качестве альтернативы вы можете возиться с переменными в потоковом файле - в зависимости от того, насколько велика ваша операция.

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

person user7594840    schedule 10.07.2019