Использование Apache Nifi для сбора файлов из сторонних API Rest — советы по потоку

Я пытаюсь создать поток в Apache-Nifi для сбора файлов из стороннего RESTful APi, и я установил свой поток следующим образом:

InvokeHTTP - ExtractText - PutFile

Я могу собрать файл, который мне нужен, поскольку я указал это в своем удаленном URL-адресе, однако, когда я получаю все данные из указанного файла, он выводит несколько (сотни) одних и тех же файлов в мой выходной каталог.

3 вещи, с которыми мне нужна помощь:

1: Как заставить поток выводить файл в удобочитаемом формате .csv, а не просто файл без расширения

2: Как я могу остановить процессор, когда у меня есть все данные, которые мне нужны

3: Файл Json, который мне предоставили, дает мне возможность получать файлы из определенного диапазона дат:

https://api.3rdParty.com/reports/v1/scheduledReports/877800/1553731200000

Или я могу выбрать конкретный файл:

https://api.3rdParty.com/reports/v1/scheduledReports/download/877800/201904/CTDDaily/2019-04-02T01:50:00Z.csv

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

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

Спасибо.

Примечание. Имя стороннего хоста было переименовано в целях безопасности, поэтому прямые ссылки работать не будут. Спасибо.

Ваши ссылки не работают.

mle 08.04.2019 13:42

Ссылки не будут работать, так как я заменил детали третьей стороны на «3rdParty».

Donna 08.04.2019 15:41
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
2
829
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

1) Вы меняете имя файла потока на все, что хотите, используя процессор UpdateAttribute. Если вы хотите, чтобы он имел расширение «.csv», вы можете добавить свойство с именем «имя файла» со значением «${имя файла}.csv» (без кавычек при вводе).

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

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

https://api.3rdParty.com/reports/v1/scheduledReports/877800/${сейчас()}

Где now() возвращает текущую временную метку в виде эпохи.

Вы также можете отформатировать его в строку даты, если это необходимо:

${сейчас():формат('гггг-ММ-дд')}

https://nifi.apache.org/docs/nifi-docs/html/expression-language-guide.html

Большое спасибо - посмотрю на эти биты, как вы указали выше!

Donna 08.04.2019 16:17

Другие вопросы по теме